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

C++設(shè)計模式之適配器模式(Adapter)

 更新時間:2018年03月28日 11:37:23   作者:返回主頁 chencarl  
這篇文章主要為大家詳細介紹了C++設(shè)計模式之適配器模式Adapter,具有一定的參考價值,感興趣的小伙伴們可以參考一下

適配器模式顧名思義在于接口的轉(zhuǎn)換,最形象的例子就如兩口轉(zhuǎn)三口電源適配器,口子的數(shù)量可以理解為參數(shù)數(shù)量,一如我們調(diào)用三個參數(shù)的接口,而提供的接口只有兩個參數(shù),那么久需要適配器類進行接口的擴展改造,這就是適配器模式存在的最主要意義。

作用

將一個類的接口轉(zhuǎn)換成客戶希望的另外一個接口,使得原本由于接口不兼容而不能一起工作的那些類可以一起工作,使控制范圍之外的一個原有對象與某個接口匹配。適配器模式主要應用于希望復用一些現(xiàn)存的類,但是接口又與復用環(huán)境要求不一致的情況。
想使用一個已經(jīng)存在的類,但如果它的接口,也就是它的方法和你的要求不相同時,就應該考慮用適配器模式。

類視圖

類模式適配器

對象模式適配器

代碼實現(xiàn)

//目標接口類,客戶需要的接口
class Target
{
public:
  Target(){}
  virtual ~Target(){}
  virtual void Request()//定義新的標準接口
  {
    cout << "Request" << endl;
  }
};

//需要適配的類
class Object
{
public:
  Object(){}
  ~Object(){}
  void SpecificRequest()
  {
    cout << "SpecificRequest" << endl;
  }
};

//類模式,適配器類,通過public繼承獲得接口繼承的效果,通過private繼承獲得實現(xiàn)繼承的效果
class Adapter :public Target, private Object
{
public:
  Adapter(){}
  ~Adapter(){}
  virtual void Request()//實現(xiàn)Target定義的Request接口
  {
    cout << "AdapterRequest" << endl;
    this->SpecificRequest();
    cout << "----------------------------" << endl;
  }
};

//對象模式,適配器類,繼承Target類,采用組合的方式實現(xiàn)Object的復用
class Adapter1 :public Target
{
public:
  Adapter1(Object* adaptee) :_adaptee(adaptee)
  {}
  Adapter1() :_adaptee(new Object)
  {}
  ~Adapter1(){}
  virtual void Request()//實現(xiàn)Target定義的Request接口
  {
    cout << "Adapter1Request" << endl;
    _adaptee->SpecificRequest();
    cout << "----------------------------" << endl;
  }
private:
  Object* _adaptee;
};

//client調(diào)用
int main()
{
  //類模式Adapter
  Target* pTarget = new Adapter();
  pTarget->Request();

  //對象模式Adapter1
  Adaptee* ade = new Adaptee();
  Target* pTarget1= new Adapter1(ade);
  pTarget1->Request();

  //對象模式Adapter2
  Target* pTarget2 = new Adapter1();
  pTarget2->Request();

  return 0;
}

在Adapter模式的兩種模式中,有一個很重要的概念就是接口繼承和實現(xiàn)繼承的區(qū)別和聯(lián)系。接口繼承和實現(xiàn)繼承是面向?qū)ο箢I(lǐng)域的兩個重要的概念,接口繼承指的是通過繼承,子類獲得了父類的接口,而實現(xiàn)繼承指的是通過繼承子類獲得了父類的實現(xiàn)(并不統(tǒng)共接口)。在C++中的public繼承既是接口繼承又是實現(xiàn)繼承,因為子類在繼承了父類后既可以對外提供父類中的接口操作,又可以獲得父類的接口實現(xiàn)。當然我們可以通過一定的方式和技術(shù)模擬單獨的接口繼承和實現(xiàn)繼承,例如我們可以通過private繼承獲得實現(xiàn)繼承的效果(private繼承后,父類中的接口都變?yōu)閜rivate,當然只能是實現(xiàn)繼承了。),通過純抽象基類模擬接口繼承的效果,但是在C++中pure virtual function也可以提供默認實現(xiàn),因此這是不純正的接口繼承,但是在Java中我們可以interface來獲得真正的接口繼承了。

以上就是本文的全部內(nèi)容,希望對大家的學習有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • 淺談C++函數(shù)聲明后面加throw()的作用(必看)

    淺談C++函數(shù)聲明后面加throw()的作用(必看)

    下面小編就為大家?guī)硪黄獪\談C++函數(shù)聲明后面加throw()的作用(必看)。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-01-01
  • C語言學習之函數(shù)知識總結(jié)

    C語言學習之函數(shù)知識總結(jié)

    函數(shù)是一組一起執(zhí)行一個任務的語句。每個?C?程序都至少有一個函數(shù),即主函數(shù)?main()?,所有簡單的程序都可以定義其他額外的函數(shù)。本文就為大家詳細講講C語言中函數(shù)的相關(guān)知識點,希望有所幫助
    2022-07-07
  • 基于C++執(zhí)行內(nèi)存memcpy效率測試的分析

    基于C++執(zhí)行內(nèi)存memcpy效率測試的分析

    本篇文章對C++中執(zhí)行內(nèi)存memcpy的效率進行了分析測試。需要的朋友參考下
    2013-05-05
  • 常用Hash算法(C語言的簡單實現(xiàn))

    常用Hash算法(C語言的簡單實現(xiàn))

    下面小編就為大家?guī)硪黄S肏ash算法(C語言的簡單實現(xiàn))。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2016-09-09
  • C++運算符重載實例代碼詳解(調(diào)試環(huán)境 Visual Studio 2019)

    C++運算符重載實例代碼詳解(調(diào)試環(huán)境 Visual Studio 2019)

    這篇文章主要介紹了C++運算符重載實例(調(diào)試環(huán)境 Visual Studio 2019),本文通過示例代碼給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2020-03-03
  • 解析C語言結(jié)構(gòu)體及位段

    解析C語言結(jié)構(gòu)體及位段

    今天小編就為大家分享一篇關(guān)于解析C語言結(jié)構(gòu)體及位段,小編覺得內(nèi)容挺不錯的,現(xiàn)在分享給大家,具有很好的參考價值,需要的朋友一起跟隨小編來看看吧
    2018-12-12
  • C++運算符重載的詳細講解

    C++運算符重載的詳細講解

    這篇文章主要給大家介紹了關(guān)于C++運算符重載的相關(guān)資料,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2021-04-04
  • C++ 指向類成員的指針

    C++ 指向類成員的指針

    指向類成員的指針總的來講可以分為兩大類四小類(指向數(shù)據(jù)成員還是成員函數(shù),指向普通成員還是靜態(tài)成員)
    2020-03-03
  • C++?使用getline()從文件中讀取一行字符串方法示例

    C++?使用getline()從文件中讀取一行字符串方法示例

    這篇文章主要介紹了C++?使用getline()從文件中讀取一行字符串方法示例,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2023-09-09
  • C++靜態(tài)變量,常量的存儲位置你真的了解嗎

    C++靜態(tài)變量,常量的存儲位置你真的了解嗎

    這篇文章主要介紹了C++中靜態(tài)變量與常量的存儲位置的相關(guān)資料,需要的朋友可以參考下,希望能夠給你帶來幫助
    2021-08-08

最新評論

乌鲁木齐县| 澄江县| 八宿县| 方城县| 靖远县| 张家川| 伊通| 天津市| 赤城县| 湾仔区| 凤翔县| 察雅县| 县级市| 岳池县| 万安县| 武乡县| 麻栗坡县| 渝北区| 光泽县| 哈密市| 黄石市| 阿坝| 太白县| 商河县| 黄骅市| 阳西县| 都安| 舞钢市| 奎屯市| 青岛市| 彭山县| 宁德市| 南漳县| 合阳县| 塔河县| 赤峰市| 缙云县| 融水| 宽城| 宁津县| 当阳市|