• 外观模式(Facade)


    1、作用

    (1)、将各个子系统的接口汇聚在一起,定义一个统一的接口方便客户使用,满足“迪米特法则”,即客户不需要了解子系统,只需要知道Facade模式封装的类即可以使用所有子系统。

    (2)、隔离用户和子系统,将用户与子系统解耦,当子系统有修改是,顶多修改Facade模式封装的类,无需修改用户代码。

    2、实现方式

    这个模式有点像适配器模式。

    相同点:都是接口在套一层接口。

    不同点:(1)、适配器模式,外层接口与内存层接口不一样,而外观模式一般是内存接口和外层接口一样,甚至名字都一样。

                  (2)、适配器模式只封装一个接口,外观模式则是封装很多子系统的接口。

    下面以一个MobilePhone的大系统通过Facade模式封装子系统功能的UML图:Facade就是系统封装子系统的接口,用户通过调用系统层(Facade)的接口来调用子系统。

    3、C++代码

    MobilePhone.h

    #include <iostream>
    
    
    #ifndef __MOBILE_PHONE__H__
    #define __MOBILE_PHONE__H__
    
    using namespace std;
    
    
    class BaseBand {
        public:
            void call() { cout<<"打电话..."<<endl; }
            void hungup() { cout<<"挂电话..."<<endl; }
    };
    
    
    class Camera {
        public:
            void takePicture() { cout<<"拍照片"<<endl; }
    };
    
    
    class MobilePhone {
        public:
            void call() { baseBand.call(); }
            void hungup() { baseBand.hungup(); }
            void takePicture() { camera.takePicture(); }
        private:
            BaseBand baseBand;
            Camera   camera;
    };
    
    
    #endif

    test.cc

    #include "MobilePhone.h"
    
    int main() {
        MobilePhone mobilePhone;
        mobilePhone.call();
        mobilePhone.hungup();
        mobilePhone.takePicture();
    
    
        return 0;
    }

    输出:

  • 相关阅读:
    梦断代码,读书计划
    《梦断代码》读后感1
    四则运算2详细过程
    四则运算2初步构思
    四则运算
    阅读《梦断代码》计划
    四则运算2设计思路
    随机输出30道四则运算题
    软件工程阅读计划
    面试题04
  • 原文地址:https://www.cnblogs.com/yuandonghua/p/11888242.html
Copyright © 2020-2023  润新知