外观模式

外观模式:

外观模式为子系统中的一组接口提供一个一致的界面,此模式定义了一个高层接口,这个接口使得这个子系统更加容易使用

什么时候使用外观模式:

首先在设计初期阶段,应该要有意识的将不同的两个层分离

将复杂的子类系统封装到一个接口,统一进行管理,使得子类系统与用户间的耦合性大大降低

当开发大型的系统时,你可以为系统开发一个外观Facade类,来提供设计粗糙或高度复杂的遗留代码的比较清晰的接口,让系统与Facade对象交互

/*
    外观模式就是将复杂的子类系统抽象到同一个的接口进行管理
    ,外界只需要通过此接口与子类系统进行交互,而不必要直接与复杂的子类
    系统进行交互
*/

#include <iostream>
using namespace std;





/*这里定义四个子类系统*/
class SubSystemOne
{
public:
    void MethorOne()
    {
        cout<<"子系统方法一"<<endl;
    }
    
};


class SubSystemTwo
{
public:
    void MethorTwo()
    {
        cout<<"子系统方法二"<<endl;
    }
    
};



class SubSystemThree
{
public:
    void MethorThree()
    {
        cout<<"子系统方法三"<<endl;
    }
    
};




class SubSystemFour
{
public:
    void MethorFour()
    {
        cout<<"子系统方法四"<<endl;
    }
    
};







/*
    外观类,接口
*/
class Facade
{
    SubSystemOne *one;
    SubSystemTwo *two;
    SubSystemThree *three;
    SubSystemFour *four;
    
    
    /*构造函数*/
public: 
    Facade()
    {
        one = new SubSystemOne();
        two = new SubSystemTwo();
        three = new SubSystemThree();
        four = new SubSystemFour();
    }
    
    
    void MethorA()
    {
        cout<<"方法组A()"<<endl;
        one->MethorOne();
        two->MethorTwo();
    }
    
    
    void MethorB()
    {
        cout<<"方法组B()"<<endl;
        three->MethorThree();
        four->MethorFour();
    }
    
    
};






/*
    客户端调用,客户端只需要与接口Facade交互就可以访问四个子类系统了
*/


void main()
{
    Facade facade;
    facade.MethorA();
    facade.MethorB();
    
}
原文地址:https://www.cnblogs.com/DamonBlog/p/3920146.html