91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

C++設計模式之適配器模式Adapter的示例分析

發布時間:2021-06-15 15:49:25 來源:億速云 閱讀:285 作者:小新 欄目:編程語言

這篇文章主要為大家展示了“C++設計模式之適配器模式Adapter的示例分析”,內容簡而易懂,條理清晰,希望能夠幫助大家解決疑惑,下面讓小編帶領大家一起研究并學習一下“C++設計模式之適配器模式Adapter的示例分析”這篇文章吧。

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

作用

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

類視圖

類模式適配器

C++設計模式之適配器模式Adapter的示例分析

對象模式適配器

C++設計模式之適配器模式Adapter的示例分析

代碼實現

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

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

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

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

//client調用
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模式的兩種模式中,有一個很重要的概念就是接口繼承和實現繼承的區別和聯系。接口繼承和實現繼承是面向對象領域的兩個重要的概念,接口繼承指的是通過繼承,子類獲得了父類的接口,而實現繼承指的是通過繼承子類獲得了父類的實現(并不統共接口)。在C++中的public繼承既是接口繼承又是實現繼承,因為子類在繼承了父類后既可以對外提供父類中的接口操作,又可以獲得父類的接口實現。當然我們可以通過一定的方式和技術模擬單獨的接口繼承和實現繼承,例如我們可以通過private繼承獲得實現繼承的效果(private繼承后,父類中的接口都變為private,當然只能是實現繼承了。),通過純抽象基類模擬接口繼承的效果,但是在C++中pure virtual function也可以提供默認實現,因此這是不純正的接口繼承,但是在Java中我們可以interface來獲得真正的接口繼承了。

以上是“C++設計模式之適配器模式Adapter的示例分析”這篇文章的所有內容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內容對大家有所幫助,如果還想學習更多知識,歡迎關注億速云行業資訊頻道!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

桃江县| 伊春市| 金寨县| 新竹县| 茂名市| 高阳县| 堆龙德庆县| 甘洛县| 石首市| 巨鹿县| 高州市| 临汾市| 金沙县| 铁岭市| 奉节县| 东光县| 澄城县| 白城市| 磴口县| 萝北县| 仙游县| 松潘县| 台东县| 隆林| 望都县| 天津市| 偏关县| 阜阳市| 吉安市| 闽侯县| 金秀| 安宁市| 凭祥市| 乐平市| 南皮县| 喀什市| 吉首市| 靖江市| 屏山县| 诏安县| 巫溪县|