C++設計形式編程中Facade外不雅形式的應用實例解析。本站提示廣大學習愛好者:(C++設計形式編程中Facade外不雅形式的應用實例解析)文章只能為提供參考,不一定能成為您想要的結果。以下是C++設計形式編程中Facade外不雅形式的應用實例解析正文
外不雅形式供給了一個同一的接口,用來拜訪子體系的一群接口。外不雅界說了一個高層接口,讓子體系更輕易應用。外不雅形式讓接口變得簡略,簡化了子體系的接口。外不雅形式非常簡略,簡而言之,就是簡化你的類的接口,將一系列的龐雜的進程封裝到外部,對外只供給最簡略的接口。
構造圖:
實用場景:
當你要為一個龐雜子體系供給一個簡略接口時。子體系常常由於赓續演變而變得愈來愈龐雜。年夜多半形式應用時都邑發生更多更小的類。這使得子體系更具可重用性,也更輕易對子體系停止定制,但這也給那些不須要定制子體系的用戶帶來一些應用上的艱苦。Facade可以供給一個簡略的缺省視圖,這一視圖對年夜多半用戶來講曾經足夠,而那些須要更多的可定制性的用戶可以超出Facade層。
客戶法式與籠統類的完成部門之間存在著很年夜的依附性。引入Facade將這個子體系與客戶和其他的子體系分別,可以進步子體系的自力性和可移植性。
當你須要構建一個條理構造的子體系時,應用Facade形式界說子體系中每層的進口點。假如子體系之間是互相依附的,你可讓它們僅經由過程Facade停止通信,從而簡化了它們之間的依附關系。
完成:
代碼片段 1:Facade.h
//Facade.h #ifndef _FACADE_H_ #define _FACADE_H_ class Subsystem1{ public: Subsystem1(); ~Subsystem1(); void Operation(); protected: private: }; class Subsystem2{ public: Subsystem2(); ~Subsystem2(); void Operation(); protected: private: }; class Facade{ public: Facade(); ~Facade(); void OperationWrapper(); protected: private: Subsystem1* _subs1; Subsystem2* _subs2; }; #endif //~_FACADE_H_
代碼片段 2:Facade.cpp
//Facade.cpp #include "Facade.h" #include <iostream> using namespace std; Subsystem1::Subsystem1(){ } Subsystem1::~Subsystem1(){ } void Subsystem1::Operation(){ cout<<"Subsystem2 operation.."<<endl; } Subsystem2::Subsystem2(){ } Subsystem2::~Subsystem2(){ } void Subsystem2::Operation(){ cout<<"Subsystem2 operation.."<<endl; } Facade::Facade(){ this->_subs1 = new Subsystem1(); this->_subs2 = new Subsystem2(); } Facade::~Facade(){ delete _subs1; delete _subs2; } void Facade::OperationWrapper(){ this->_subs1->Operation(); this->_subs2->Operation(); }
代碼片段 3:main.cpp
//main.cpp #include "Facade.h" #include <iostream> using namespace std; int main(int argc,char* argv[]){ Facade* f = new Facade(); f->OperationWrapper(); return 0; }
再來看一個例子: