日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > c/c++ >内容正文

c/c++

C++设计模式 - 适配器模式(Adapter)

發布時間:2024/8/1 c/c++ 63 豆豆
生活随笔 收集整理的這篇文章主要介紹了 C++设计模式 - 适配器模式(Adapter) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

接口隔離模式

  • 在組件構建過程中,某些接口之間直接的依賴常常會帶來很多問題、甚至根本無法實現。采用添加一層間接(穩定)接口,來隔離本來互相緊密關聯的接口是一種常見的解決方案。

典型模式

  • Facade
  • Proxy
  • Adapter
  • Mediator

Adapter

動機(Motivation)

  • 在軟件系統中,由于應用環境的變化,常常需要將“一些現存的對象”放在新的環境中應用,但是新環境要求的接口是這些現存對象所不滿足的。
  • 如何應對這種“遷移的變化”? 如何既能利用現有對象的良好實現,同時又能滿足新的應用環境所要求的接口?

模式定義

將一個類的接口轉換成客戶希望的另,個接口。Adapter模式使得原本由于接臺不兼容而不能一起土作的那些類可以一豎作。

結構

要點總結

  • Adapter模式主要應用于"希望復用一些現存的類,但是接口又與復用環境要求不一致的情況”, 在遺留代碼復用、類庫遷移等方面非常有用。
  • GoF 23定義了兩種Adapter模式的實現結構。:對象適配器和類適配器。但類適配器采用“多繼承"的實現方式,一般不推薦使用。對象適配器采用“對象組合”的方式,更符合松耦合精神。
  • Adapter模式可以實現的非常靈活,不必拘泥于Gof23中定義的兩種結構。例如完全可以將Adapter模式中的 “現存對象”作為新的接口方法參數,來達到適配的目的。

cpp

#include<iostream>//目標接口(新接口) class ITarget { public:virtual void process() = 0;virtual ~ITarget() {} };//遺留接口(老接口) class IAdaptee { public:virtual int bar() = 0;virtual void foo(int) = 0;virtual ~IAdaptee() {} }; //遺留類型 class OldClass :public IAdaptee { public:virtual int bar(){return 1024;}virtual void foo(int data){std::cout << data << std::endl;} }; //對象適配器 class Adapter :public ITarget { public:Adapter(IAdaptee* pAdaptee) :pAdaptee_(pAdaptee) {}virtual void process(){int data = pAdaptee_->bar();pAdaptee_->foo(data);} protected:IAdaptee* pAdaptee_; //對象組合 };/*類適配器 class Adapter : public ITarget,protected OldClass { //多繼承//...} */ int main() {IAdaptee* pAdaptee = new OldClass();ITarget* pTarget = new Adapter(pAdaptee);pTarget->process();return 0; }

總結

以上是生活随笔為你收集整理的C++设计模式 - 适配器模式(Adapter)的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。