最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

C++設(shè)計(jì)模式編程中Facade外觀模式的使用實(shí)例解析

 更新時間:2016年03月09日 16:58:32   作者:夢在天涯  
這篇文章主要介紹了C++設(shè)計(jì)模式編程中Facade外觀模式的使用實(shí)例解析,外觀模式的主要用途就是為子系統(tǒng)的復(fù)雜處理過程提供方便的調(diào)用方法,需要的朋友可以參考下

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

201639165609829.jpg (545×313)

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

實(shí)現(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;
}

再來看一個例子:

相關(guān)文章

  • C語言實(shí)現(xiàn)一個文件版動態(tài)通訊錄流程詳解

    C語言實(shí)現(xiàn)一個文件版動態(tài)通訊錄流程詳解

    這篇文章主要介紹了C語言實(shí)現(xiàn)一個文件版動態(tài)通訊錄流程,希望大家能從這篇文章中收獲到許多,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)吧
    2023-01-01
  • C++實(shí)現(xiàn)頁面的緩沖區(qū)管理器

    C++實(shí)現(xiàn)頁面的緩沖區(qū)管理器

    這篇文章主要介紹了C++實(shí)現(xiàn)頁面的緩沖區(qū)管理器,文章圍繞主題展開詳細(xì)的內(nèi)容介紹具有一定的參考價值,需要的小伙伴可以參考一下
    2022-08-08
  • C語言分裝實(shí)現(xiàn)三子棋游戲詳解

    C語言分裝實(shí)現(xiàn)三子棋游戲詳解

    這篇文章主要為大家詳細(xì)介紹了C語言分裝實(shí)現(xiàn)三子棋游戲,文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2021-05-05
  • C++實(shí)現(xiàn)修改函數(shù)代碼HOOK的封裝方法

    C++實(shí)現(xiàn)修改函數(shù)代碼HOOK的封裝方法

    這篇文章主要介紹了C++實(shí)現(xiàn)修改函數(shù)代碼HOOK的封裝方法,有助于深入了解C++的HOOK原理,需要的朋友可以參考下
    2014-10-10
  • 簡單講解C語言中宏的定義與使用

    簡單講解C語言中宏的定義與使用

    這篇文章主要介紹了C語言中宏的定義與使用,是C語言入門學(xué)習(xí)中的基礎(chǔ)知識,需要的朋友可以參考下
    2016-05-05
  • c++ string的erase刪除方法

    c++ string的erase刪除方法

    這篇文章主要介紹了c++ string的erase刪除方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-12-12
  • c++實(shí)現(xiàn)一個簡易的網(wǎng)絡(luò)緩沖區(qū)的實(shí)踐

    c++實(shí)現(xiàn)一個簡易的網(wǎng)絡(luò)緩沖區(qū)的實(shí)踐

    這篇文章主要介紹了c++實(shí)現(xiàn)一個簡易的網(wǎng)絡(luò)緩沖區(qū)的實(shí)踐,文中通過示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2021-12-12
  • C語言歸排與計(jì)排深度理解

    C語言歸排與計(jì)排深度理解

    這篇文章主要為大家詳細(xì)的介紹了C語言中計(jì)數(shù)排序和歸并排序,歸并排序是創(chuàng)建在歸并操作上的一種有效的排序算法,計(jì)數(shù)排序不用比較兩個數(shù)的大小,感興趣的朋友可以參考閱讀
    2023-04-04
  • C++命名空間using?namespace?std是什么意思

    C++命名空間using?namespace?std是什么意思

    namespace中文意思是命名空間或者叫名字空間,傳統(tǒng)的C++只有一個全局的namespace,下面這篇文章主要給大家介紹了關(guān)于C++命名空間using?namespace?std是什么意思的相關(guān)資料,需要的朋友可以參考下
    2023-01-01
  • C語言實(shí)現(xiàn)推箱子功能匯總

    C語言實(shí)現(xiàn)推箱子功能匯總

    這篇文章主要為大家詳細(xì)介紹了C語言實(shí)現(xiàn)推箱子功能,文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2021-08-08

最新評論

北流市| 西吉县| 西乌珠穆沁旗| 凤凰县| 岐山县| 香格里拉县| 抚松县| 长岭县| 怀来县| 通海县| 封丘县| 大洼县| 汉阴县| 会同县| 虹口区| 岑巩县| 正蓝旗| 旬阳县| 舟山市| 阳城县| 平顶山市| 襄汾县| 横山县| 海门市| 仁化县| 高雄县| 门头沟区| 佛冈县| 永平县| 米脂县| 探索| 达拉特旗| 赣州市| 武平县| 鹤岗市| 五指山市| 乳源| 遂溪县| 武义县| 沂南县| 商水县|