c++ 结构型模式-外观(Facade)
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 }