外观模式:引入一个外观角色封装类来简化客户端与各个子系统之间的交互,为复杂的子系统调用提供一个统一的入口,降低子系统与客户端的耦合度,且客户端调用非常方便。
如果客户端在运行一个功能,需要首先运行A对象,然后在运行B对象,最后运行C对象。客户端需要一次调用这个三个对象,如果这个功能被调用的频繁的话,每次调用都需要运行三个对象,不是很方便。外观模式就是要解决这样的问题,把需要运行的三个对象包装起来,每次调用的时候,只要调用这个包装类也就是外观类就可以了。降低了客户端和每个子系统的耦合。
#include <stdio.h>
class SystemA {
public:
void A() {
printf("启动A系统!\n");
}
};
class SystemB {
public:
void B() {
printf("启动B系统!\n");
}
};
class SystemC {
public:
void C() {
printf("启动C系统!\n");
}
};
class System{
public:
System() {
_a = new SystemA;
_b = new SystemB;
_c = new SystemC;
}
void startSys() {
printf("开始启动系统!\n");
_a->A();
_b->B();
_c->C();
}
private:
SystemA* _a;
SystemB* _b;
SystemC* _c;
};
int main() {
System* sys = new System;
sys->startSys();
return 0;
}
运行结果: