首页 > 代码库 > 外观模式

外观模式

外观模式:

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

 

什么时候使用外观模式:

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

 

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

 

当开发大型的系统时,你可以为系统开发一个外观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();    }