国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > C++ > 正文

C++設計模式編程中Facade外觀模式的使用實例解析

2020-01-26 14:42:11
字體:
供稿:網(wǎng)友

外觀模式提供了一個統(tǒng)一的接口,用來訪問子系統(tǒng)的一群接口。外觀定義了一個高層接口,讓子系統(tǒng)更容易使用。外觀模式讓接口變得簡單,簡化了子系統(tǒng)的接口。外觀模式十分簡單,簡而言之,就是簡化你的類的接口,將一系列的復雜的過程封裝到內(nèi)部,對外只提供最簡單的接口。
結(jié)構(gòu)圖:

201639165609829.jpg (545×313)

適用場景:
當你要為一個復雜子系統(tǒng)提供一個簡單接口時。子系統(tǒng)往往因為不斷演化而變得越來越復雜。大多數(shù)模式使用時都會產(chǎn)生更多更小的類。這使得子系統(tǒng)更具可重用性,也更容易對子系統(tǒng)進行定制,但這也給那些不需要定制子系統(tǒng)的用戶帶來一些使用上的困難。Facade可以提供一個簡單的缺省視圖,這一視圖對大多數(shù)用戶來說已經(jīng)足夠,而那些需要更多的可定制性的用戶可以越過Facade層。
客戶程序與抽象類的實現(xiàn)部分之間存在著很大的依賴性。引入Facade將這個子系統(tǒng)與客戶以及其他的子系統(tǒng)分離,可以提高子系統(tǒng)的獨立性和可移植性。
當你需要構(gòu)建一個層次結(jié)構(gòu)的子系統(tǒng)時,使用Facade模式定義子系統(tǒng)中每層的入口點。如果子系統(tǒng)之間是相互依賴的,你可以讓它們僅通過Facade進行通訊,從而簡化了它們之間的依賴關系。

實現(xiàn):

代碼片斷 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;}

再來看一個例子:

發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
主站蜘蛛池模板: 南郑县| 丰都县| 玉门市| 志丹县| 东台市| 集安市| 乐亭县| 石林| 万宁市| 汾阳市| 自贡市| 清河县| 沁水县| 灵山县| 新宾| 静安区| 芦山县| 武定县| 福海县| 德昌县| 会理县| 高州市| 高陵县| 和政县| 沙湾县| 广宁县| 鞍山市| 荃湾区| 河池市| 德安县| 承德县| 湘阴县| 同江市| 花垣县| 丹凤县| 兴安盟| 鄂伦春自治旗| 湘西| 普兰店市| 徐水县| 新竹市|