目录
为子系统中的一组接口提供一个一致的界面,Facade模式定义了一个高层接口,这个接口使得这一子系统更加容易使用。

知道哪些子系统类负责处理请求。
将客户的请求代理给适当的子系统对象。
实现子系统的功能。
处理由Facade对象指派的任务。
没有facade的任何相关信息;即没有指向facade的指针。
- #include
- using namespace std;
-
- class SubSystem {
- public:
- virtual void Operation() = 0;
- };
-
- class SubSystemA : public SubSystem {
- public:
- virtual void Operation() {
- cout << "SubSystem A" << endl;
- }
- };
-
- class SubSystemB : public SubSystem {
- public:
- virtual void Operation() {
- cout << "SubSystem B" << endl;
- }
- };
-
- class SubSystemC : public SubSystem {
- public:
- virtual void Operation() {
- cout << "SubSystem C" << endl;
- }
- };
-
- class Facade {
- public:
- Facade() {}
- virtual void Operation() = 0;
- };
-
- class ConcreteFacadeA : public Facade {
- public:
- ConcreteFacadeA() {
- subsystemA = new SubSystemA;
- subsystemB = new SubSystemB;
- subsystemC = new SubSystemC;
- }
- virtual void Operation() {
- cout << "Concrete Facade A : " << endl;
- subsystemA->Operation();
- subsystemB->Operation();
- subsystemC->Operation();
- }
- private:
- SubSystem* subsystemA;
- SubSystem* subsystemB;
- SubSystem* subsystemC;
- };
-
- class ConcreteFacadeB : public Facade {
- public:
- ConcreteFacadeB() {
- subsystemA = new SubSystemA;
- subsystemC = new SubSystemC;
- }
- virtual void Operation() {
- cout << "Concrete Facade B : " << endl;
- subsystemA->Operation();
- subsystemC->Operation();
- }
- private:
- SubSystem* subsystemA;
- SubSystem* subsystemC;
- };
-
- int main() {
- Facade* concreteFacadeA = new ConcreteFacadeA;
- concreteFacadeA->Operation();
-
- Facade* concreteFacadeB = new ConcreteFacadeB;
- concreteFacadeB->Operation();
-
- return 0;
- }