C++设计模式 - 适配器模式(Adapter)
生活随笔
收集整理的這篇文章主要介紹了
C++设计模式 - 适配器模式(Adapter)
小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
接口隔離模式
- 在組件構建過程中,某些接口之間直接的依賴常常會帶來很多問題、甚至根本無法實現(xiàn)。采用添加一層間接(穩(wěn)定)接口,來隔離本來互相緊密關聯(lián)的接口是一種常見的解決方案。
典型模式
- Facade
- Proxy
- Adapter
- Mediator
Adapter
動機(Motivation)
- 在軟件系統(tǒng)中,由于應用環(huán)境的變化,常常需要將“一些現(xiàn)存的對象”放在新的環(huán)境中應用,但是新環(huán)境要求的接口是這些現(xiàn)存對象所不滿足的。
- 如何應對這種“遷移的變化”? 如何既能利用現(xiàn)有對象的良好實現(xiàn),同時又能滿足新的應用環(huán)境所要求的接口?
模式定義
將一個類的接口轉(zhuǎn)換成客戶希望的另,個接口。Adapter模式使得原本由于接臺不兼容而不能一起土作的那些類可以一豎作。
結構
要點總結
- Adapter模式主要應用于"希望復用一些現(xiàn)存的類,但是接口又與復用環(huán)境要求不一致的情況”, 在遺留代碼復用、類庫遷移等方面非常有用。
- GoF 23定義了兩種Adapter模式的實現(xiàn)結構。:對象適配器和類適配器。但類適配器采用“多繼承"的實現(xiàn)方式,一般不推薦使用。對象適配器采用“對象組合”的方式,更符合松耦合精神。
- Adapter模式可以實現(xiàn)的非常靈活,不必拘泥于Gof23中定義的兩種結構。例如完全可以將Adapter模式中的 “現(xiàn)存對象”作為新的接口方法參數(shù),來達到適配的目的。
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)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 计算机word表格三线形,word中制作
- 下一篇: 修复桌面快捷方式箭头图标