首页 > 代码库 > Facade 模式
Facade 模式
在软件系统开发中经常回会遇到这样的情况,你实现了一些接口(模块),而这些接口(模块)都分布在几个类中(比如 A和 B、C、D) :A中实现了一些接口,B 中实现一些接口(或者 A代表一个独立模块,B、C、D代表另一些独立模块) 。然后你的客户程序员 (使用你设计的开发人员) 只有很少的要知道你的不同接口到底是在那个类中实现的,绝大多数只是想简单的组合你的 A-D的类的接口,他并不想知道这些接口在哪里实现的。这时我们就要用到Facade 模式,Facade 模式在高层提供了一个统一的接口。
1 //////////////////Facade.h//////////////////////////////////////////////////////// 2 #pragma once 3 class Subsystem1 4 { 5 public: 6 ~Subsystem1(); 7 Subsystem1(); 8 void operation(); 9 protected: 10 private: 11 }; 12 13 class Subsystem2 14 { 15 public: 16 ~Subsystem2(); 17 Subsystem2(); 18 void operation(); 19 protected: 20 private: 21 }; 22 23 class Facade 24 { 25 public: 26 ~Facade(); 27 Facade(); 28 void OperationWrapper(); 29 protected: 30 private: 31 Subsystem1* _Subs1 ; 32 Subsystem2* _Subs2 ; 33 };
1 ///////////Facade.cpp/////////////////////////////////////////////////////////////// 2 #include "Facade.h" 3 #include <iostream> 4 using namespace std; 5 Subsystem1::Subsystem1() 6 { 7 8 } 9 Subsystem1::~Subsystem1() 10 { 11 12 } 13 void Subsystem1::operation() 14 { 15 cout<<"Subsystem1 operation"<<endl; 16 } 17 Subsystem2::Subsystem2() 18 { 19 20 } 21 22 Subsystem2::~Subsystem2() 23 { 24 25 } 26 27 void Subsystem2::operation() 28 { 29 cout<<"Subsystem2 operation"<<endl; 30 } 31 32 Facade::Facade() 33 { 34 this->_Subs1 = new Subsystem1(); 35 this->_Subs2 = new Subsystem2(); 36 } 37 38 Facade::~Facade() 39 { 40 delete _Subs1; 41 delete _Subs2; 42 } 43 44 void Facade::OperationWrapper() 45 { 46 this->_Subs1->operation(); 47 this->_Subs2->operation(); 48 }
1 //////////main.cpp//////////////////////////////////////////////////////////////// 2 #include "Facade.h" 3 #include <iostream> 4 int main() 5 { 6 Facade* fa = new Facade(); 7 fa->OperationWrapper(); 8 system("pause"); 9 return 0; 10 }
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。