外观(facade)模式为子系统中的一组接口提供一个一致(稳定)的界面,Façade模式定义了一个高层接口,这个接口使得这一子系统更加容易使用(复用)。
具有类似功能的类群(类库、子系统),提供了一个一致简单的界面叫做facade
将复杂的子系统抽象成一个类进行管理,外界通过抽象接口与子系统交互,不直接与子系统交互
//子系统
class SonSymtem1 {
public:
void run1() {
cout << "子系统1运行---------"<<endl;
}
};
class SonSymtem2 {
public:
void run2() {
cout << "子系统2运行---------" << endl;
}
};
class SonSymtem3 {
public:
void run3() {
cout << "子系统3运行---------" << endl;
}
};
//外观类
class Facade {
public:
Facade() {
son1 = new SonSymtem1;
son2 = new SonSymtem2;
son3 = new SonSymtem3;
}
~Facade() {
if (son1 != nullptr) {
delete son1;
}
if (son2 != nullptr) {
delete son2;
}
if (son3 != nullptr) {
delete son3;
}
}
void run() {
son1->run1();
son2->run2();
son3->run3();
}
private:
SonSymtem1* son1 = nullptr;
SonSymtem2* son2 = nullptr;
SonSymtem3* son3 = nullptr;
};
//调用
void test() {
Facade* facade = new Facade;
facade->run();
}