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;
}
再來看一個例子: