1) 意图:
为子系统中的一组接口提供一个一致的界面,Facade模式定义了一个高层接口,这个接口使得子系统更加容易使用
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 }
来源:https://www.cnblogs.com/ho966/p/12231672.html