外观模式
设计模式
Facade模式也叫外观模式,是由GoF提出的23种设计模式中的一种。 Facade模式为一组具有类似功能的类群,比如类库,子系统等等,提供一个一致的简单的界面。这个一致的简单的界面被称作 facade。
Facade
为调用方,定义简单的调用接口。
Clients
调用者。通过 Facade接口调用提供某功能的内部类群。
Packages
功能提供者。指提供功能的类群(模块或子系统)
适用于:
为子系统中统一一套接口,让子系统更加容易使用。
代码
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66
| #include <iostream>
using namespace std;
class SubSystemA { public: void doThing() { cout << "SubSystemA run" << endl; } };
class SubSystemB { public: void doThing() { cout << "SubSystemB run" << endl; } };
class SubSystemC { public: void doThing() { cout << "SubSystemC run" << endl; } };
class Facade { public: Facade() { sysA = new SubSystemA; sysB = new SubSystemB; sysC = new SubSystemC; } ~Facade() { delete sysA; delete sysB; delete sysC; } void doThing() { sysA->doThing(); sysB->doThing(); sysC->doThing(); } private: SubSystemA* sysA; SubSystemB* sysB; SubSystemC* sysC; };
int main() { Facade* f = new Facade; f->doThing(); cout << "Hello world!" << endl; return 0; }
|
输出:
1 2 3 4
| SubSystemA run SubSystemB run SubSystemC run Hello world!
|