c++ 结构型模式-外观(Facade)

白昼怎懂夜的黑 提交于 2020-01-24 00:03:35

1) 意图:

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

2) 结构:

 

 

3) 适用性:

  1. 为一个复杂子系统提供一个简单接口时
  2. 为了提高子系统的独立型和可移植性
  3. 当需要构建一个层次结构的子系统时,使用Facade模式定义子系统每层的入口点

4) 举例:

 1 #include <iostream>
 2 #include <list>
 3 class  SubSystem1
 4 {
 5 public:
 6     SubSystem1() {}
 7     virtual ~SubSystem1() {}
 8     virtual void  Operation1()
 9     {
10         std::cout << "Operation1" << std::endl;
11     }
12 };
13 class  SubSystem2
14 {
15 public:
16     SubSystem2() {}
17     virtual ~SubSystem2() {}
18     virtual void  Operation2()
19     {
20         std::cout << "Operation2" << std::endl;
21     }
22 };
23 class  SubSystem3
24 {
25 public:
26     SubSystem3() {}
27     virtual ~SubSystem3() {}
28     virtual void  Operation3()
29     {
30         std::cout << "Operation3" << std::endl;
31     }
32 };
33 class  Facade
34 {
35 public:
36     Facade() {}
37     virtual ~Facade() {}
38     virtual void  ProductA()
39     {
40         m_subSystem1.Operation1();
41         m_subSystem2.Operation2();
42     }
43     virtual void  ProductB()
44     {
45         m_subSystem2.Operation2();
46         m_subSystem3.Operation3();
47     }
48 private:
49     SubSystem1 m_subSystem1;
50     SubSystem2 m_subSystem2;
51     SubSystem3 m_subSystem3;
52 };
53  int main()
54  {
55      Facade facade;
56      facade.ProductA();
57      facade.ProductB();
58      system("pause");
59  }

 

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!