简介
观模式是为了解决类与类之家的依赖关系的,像spring一样,可以将类和类之间的关系配置到配置文件中,而外观模式就是将他们的关系放在一个Facade类中,降低了类类之间的耦合度。
角色与职责
Facade:为方便调用,定义的统一包装接口
SubSyntem:功能提供者,指提供功能的类群。
使用场景
客户端与系统端解耦时,客户端不需要知道系统内部的复杂联系,整个系统只需提供一个"接待员"即可。
实现
#include <iostream>
#include <string>
using namespace std;
class SubSystemA {
public:
void doThing() {
cout << "SubSystemA run." << endl;
}
};
class SubSystemB {
public:
void doThing() {
cout << "SubSystemB run." << endl;
}
};
// 装饰类,对其他功能类进行装饰。
class Facade {
public:
Facade() {
m_sysA = new SubSystemA;
m_sysB = new SubSystemB;
}
~Facade() {
if (m_sysA != NULL) delete m_sysA;
if (m_sysB != NULL) delete m_sysB;
}
void doThing() {
m_sysA->doThing();
m_sysB->doThing();
}
private:
SubSystemA* m_sysA;
SubSystemB* m_sysB;
};
int main(int argc, char* argv[]) {
Facade* facade = new Facade;
facade->doThing();
delete facade;
cin.get();
return 0;
}