- 外观模式:为复杂的子系统提供一个统一的接口,使得子系统更易于使用。
- 主要角色:
- 外观
- 子系统
- 客户端
#include <iostream>
using namespace std;
/*
* 外观模式:将子系统中的一组接口提供一个一致的界面
* 外观模式定义了一个高层接口,这个接口使得这一子系统更加容易使用
* */
class SubsysA {
public:
void dothingA() {
cout << "SubsysA do thing" << endl;
}
};
class SubsysB {
public:
void dothingB() {
cout << "SubsysB do thing" << endl;
}
};
class SubsysC {
public:
void dothingC() {
cout << "SubsysC do thing" << endl;
}
};
class Facade {
public:
Facade() {
m_sysA = new SubsysA;
m_sysB = new SubsysB;
m_sysC = new SubsysC;
}
~Facade() {
if (m_sysA != NULL) {
delete m_sysA;
m_sysA = NULL;
}
if (m_sysB != NULL) {
delete m_sysB;
m_sysB = NULL;
}
if (m_sysC != NULL) {
delete m_sysC;
m_sysC = NULL;
}
}
void dothing() {
m_sysA->dothingA();
m_sysB->dothingB();
m_sysC->dothingC();
}
private:
SubsysA* m_sysA;
SubsysB* m_sysB;
SubsysC* m_sysC;
};
int main() {
// 使用外观模式之前
SubsysA* a = new SubsysA;
a->dothingA();
delete a;
SubsysB* b = new SubsysB;
b->dothingB();
delete b;
SubsysC* c = new SubsysC;
c->dothingC();
delete c;
cout << endl;
// 使用外观模式之后
Facade* facade = new Facade;
facade->dothing();
delete facade;
return 0;
}
创建模式(5种)
结构模式(7种)
行为模式(11种)