外观模式
facade
模式也叫外观模式,是由GoF
提出的23种设计模式中的一种,facade
模式为一组具有类似功能的类群,比如类库,子系统等等,提供一个一致的简单界面。这个一致的简单的界面被称为facade
。
Facade
为调用方,定义简单的调用接口
Clients
调用者,通过facade
接口调用提供某功能的内部类群
Packages
功能提供者,指提供功能的类群
适用于:为子系统提供统一一套接口,让子系统更加容易使用。
//// Created by andrew on /11/21.//#include <iostream>using namespace std;class SubSystemA{public:void doThing(){cout << "Subsystem A run" << endl;}};class SubSystemB{public:void doThing(){cout << "SubSystem B run" << endl;}};class SubSystemC{public:void doThing(){cout << "SubSystem B run" << endl;}};class Facade{public:Facade(){sysA = new SubSystemA;sysB = new SubSystemB;sysC = new SubSystemC;}~Facade(){delete sysA;delete sysB;delete sysC;}public:void doThing(){sysA->doThing();sysB->doThing();sysC->doThing();}private:SubSystemA *sysA;SubSystemB *sysB;SubSystemC *sysC;};int main(int argc, char *argv[]) {// 没有使用之前cout << "before use facade" << endl;SubSystemA *sysA = new SubSystemA;SubSystemB *sysB = new SubSystemB;SubSystemC *sysC = new SubSystemC;sysA->doThing();sysB->doThing();sysC->doThing();delete sysA;delete sysB;delete sysC;// 是要给你之后cout << "after usr facade" << endl;Facade *f = new Facade;f->doThing();delete f;return 0;}