這篇文章主要為大家展示了“C++設(shè)計模式之適配器模式Adapter的示例分析”,內(nèi)容簡而易懂,條理清晰,希望能夠幫助大家解決疑惑,下面讓小編帶領(lǐng)大家一起研究并學(xué)習(xí)一下“C++設(shè)計模式之適配器模式Adapter的示例分析”這篇文章吧。
成都創(chuàng)新互聯(lián)-專業(yè)網(wǎng)站定制、快速模板網(wǎng)站建設(shè)、高性價比潘集網(wǎng)站開發(fā)、企業(yè)建站全套包干低至880元,成熟完善的模板庫,直接使用。一站式潘集網(wǎng)站制作公司更省心,省錢,快速模板網(wǎng)站建設(shè)找我們,業(yè)務(wù)覆蓋潘集地區(qū)。費(fèi)用合理售后完善,10多年實體公司更值得信賴。適配器模式顧名思義在于接口的轉(zhuǎn)換,最形象的例子就如兩口轉(zhuǎn)三口電源適配器,口子的數(shù)量可以理解為參數(shù)數(shù)量,一如我們調(diào)用三個參數(shù)的接口,而提供的接口只有兩個參數(shù),那么久需要適配器類進(jìn)行接口的擴(kuò)展改造,這就是適配器模式存在的最主要意義。
作用
將一個類的接口轉(zhuǎn)換成客戶希望的另外一個接口,使得原本由于接口不兼容而不能一起工作的那些類可以一起工作,使控制范圍之外的一個原有對象與某個接口匹配。適配器模式主要應(yīng)用于希望復(fù)用一些現(xiàn)存的類,但是接口又與復(fù)用環(huán)境要求不一致的情況。
想使用一個已經(jīng)存在的類,但如果它的接口,也就是它的方法和你的要求不相同時,就應(yīng)該考慮用適配器模式。
類視圖
類模式適配器
對象模式適配器
代碼實現(xiàn)
//目標(biāo)接口類,客戶需要的接口 class Target { public: Target(){} virtual ~Target(){} virtual void Request()//定義新的標(biāo)準(zhǔn)接口 { 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的復(fù)用 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)。當(dāng)然我們可以通過一定的方式和技術(shù)模擬單獨的接口繼承和實現(xiàn)繼承,例如我們可以通過private繼承獲得實現(xiàn)繼承的效果(private繼承后,父類中的接口都變?yōu)閜rivate,當(dāng)然只能是實現(xiàn)繼承了。),通過純抽象基類模擬接口繼承的效果,但是在C++中pure virtual function也可以提供默認(rèn)實現(xiàn),因此這是不純正的接口繼承,但是在Java中我們可以interface來獲得真正的接口繼承了。
以上是“C++設(shè)計模式之適配器模式Adapter的示例分析”這篇文章的所有內(nèi)容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內(nèi)容對大家有所幫助,如果還想學(xué)習(xí)更多知識,歡迎關(guān)注創(chuàng)新互聯(lián)網(wǎng)站建設(shè)公司行業(yè)資訊頻道!
另外有需要云服務(wù)器可以了解下創(chuàng)新互聯(lián)建站jinyejixie.com,海內(nèi)外云服務(wù)器15元起步,三天無理由+7*72小時售后在線,公司持有idc許可證,提供“云服務(wù)器、裸金屬服務(wù)器、高防服務(wù)器、香港服務(wù)器、美國服務(wù)器、虛擬主機(jī)、免備案服務(wù)器”等云主機(jī)租用服務(wù)以及企業(yè)上云的綜合解決方案,具有“安全穩(wěn)定、簡單易用、服務(wù)可用性高、性價比高”等特點與優(yōu)勢,專為企業(yè)上云打造定制,能夠滿足用戶豐富、多元化的應(yīng)用場景需求。
標(biāo)題名稱:C++設(shè)計模式之適配器模式Adapter的示例分析-創(chuàng)新互聯(lián)
本文鏈接:http://jinyejixie.com/article36/peosg.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供虛擬主機(jī)、網(wǎng)站策劃、微信小程序、App設(shè)計、網(wǎng)站內(nèi)鏈、面包屑導(dǎo)航
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)
猜你還喜歡下面的內(nèi)容