亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 編程 > C++ > 正文

深入解析設計模式中的適配器模式在C++中的運用

2020-05-23 14:07:41
字體:
來源:轉載
供稿:網友
這篇文章主要介紹了設計模式中的適配器模式在C++中的運用,通常適配器模式可以細分為類適配器和對象適配器兩種情況,需要的朋友可以參考下
 

適配器模式屬于結構型的設計模式,它是結構型設計模式之首(用的最多的結構型設計模式)。
適配器設計模式也并不復雜,適配器它是主要作用是將一個類的接口轉換成客戶希望的另外一個接口這樣使得原本由于接口不兼容而不能一起工作的那些類可以一起工作。適配器模式有兩種:1.類的適配器 2.對象適配器,對象適配器更多一些。

示例:比如你在網上買了一個手機,但是買家給你發回來了一個3接頭的充電器,但是恰好你又沒有3接頭的插槽,只有2個接口的插槽,于是你很直然地便會想到去找你個3接口轉兩接口的轉換器。簡單的分析下這個轉換器便是我們這里的適配器Adapter。三相插頭便是我們要適配的Adaptee,兩相插類適配器-----在我看來C++的類適配器的用多重繼承實現,并提供適配后的接口。

設計模式,適配器模式,C++

這是你的三相插頭

class ThreePhaseOutlet { public:   void doThreePhasePlugin()   {     cout<<"三相插頭強勢插入!"<<endl;   } }; 

這是你想要的兩相插頭

class TwoPhaseOutlet  { public:   virtual void doPlugin() = 0; }; 

 
然后你將需要找到一個轉接頭,將三相插頭轉換為“兩相插頭”

class OutletConvertor: public TwoPhaseOutlet,public ThreePhaseOutlet { public:   void doPlugin()   {     doConvertor();     doThreePhasePlugin();   }       void doConvertor()   {     cout<<"三相插頭轉為兩廂插頭!"<<endl;   } }; 

現在你可以強勢插入兩相的插口了。

TwoPhaseOutlet* outlet = new OutletConvertor(); outlet->doPlugin(); 

對象適配器模式-----對象適配器是將需要適配的對象進行包裝然后提供適配后的接口。

設計模式,適配器模式,C++

對象適配器的 三相插口和轉接頭的代碼和上面一致。只是整合步驟不一致

class OutletConvertor : public TwoPhaseOutlet { public:   void doPlugin()   {     doConvertor();     m_out.doThreePhasePlugin();   }   void doConvertor()   {     cout<<"三相插頭轉為兩廂插頭!"<<endl;   }   ThreePhaseOutlet m_out; }; 

對象適配器相比類適配器來說更加靈活,他可以選擇性適配自己想適配的對象。例如我們下面把代碼改成這樣,你也許就會明白為什么我這樣說:

class OutletConvertor : public TwoPhaseOutlet { public:   OutletConvertor(ThreePhaseOutlet out)   {     m_out = out;   }   void doPlugin()   {     doConvertor();     m_out.doThreePhasePlugin();   }   void doConvertor()   {     cout<<"三相插頭轉為兩廂插頭!"<<endl;   }   ThreePhaseOutlet m_out; }; 

我們在構造的時候將具體需要適配的適配對象傳入,這樣便可以根據傳入不同的對象,從而對該對象進行適配。而類適配器卻無法選擇對象,他是對整個類進行適配。也就是把所有的三相插口全部轉換為兩相的,而不是針對某一個。


在以下各種情況下使用適配器模式:

1、 系統需要使用現有的類,而此類的接口不符合系統的需要。 
2、 想要建立一個可以重復使用的類,用于與一些彼此之間沒有太大關聯的一些類,包括一些可能在將來引進的類一起工作。這些源類不一定有很復雜的接口。 
3、 (對對象適配器而言)在設計里,需要改變多個已有子類的接口,如果使用類的適配器模式,就要針對每一個子類做一個適配器,而這不太實際。

Adapter模式在實現時有以下這些值得注意的地方:

1、 目標接口可以省略,模式發生退化。但這種做法看似平庸而并不平庸,它可以使Adaptee不必實現不需要的方法(可以參考Default Adapter模式)。其表現形式就是父類實現缺省方法,而子類只需實現自己獨特的方法。這有些像模板(Template)模式。 
2、 適配器類可以是抽象類。 
3、 帶參數的適配器模式。使用這種辦法,適配器類可以根據參數返還一個合適的實例給客戶端。



發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
国产精品电影网| 中文字幕欧美日韩精品| 精品中文字幕视频| 亚洲人成自拍网站| 欧美成人免费小视频| 亚洲电影免费观看| 久久成人这里只有精品| 孩xxxx性bbbb欧美| 91精品在线一区| 欧美精品免费播放| 亚洲第一av网站| 亚洲女在线观看| 日韩av123| 亚洲精品一区久久久久久| 国产午夜精品久久久| 色妞色视频一区二区三区四区| 午夜精品久久久久久久久久久久| 国内伊人久久久久久网站视频| 狠狠操狠狠色综合网| 欧美一区二区三区免费观看| 这里只有精品视频| 国产有码一区二区| 中文字幕亚洲天堂| 日韩亚洲国产中文字幕| 亚洲欧洲一区二区三区在线观看| 亚洲精品二三区| 国产视频福利一区| 欧美丝袜一区二区| 成人精品视频99在线观看免费| 亚洲国产成人久久| 久久久久久国产精品久久| 国产97在线亚洲| www.午夜精品| 91极品女神在线| 亚洲天堂av在线播放| 久久亚洲国产精品| 国产欧美最新羞羞视频在线观看| 亚洲视频在线免费观看| xvideos国产精品| 日韩免费在线播放| 91成人在线观看国产| 亚洲伊人久久综合| 91精品国产自产91精品| 亚洲欧洲一区二区三区在线观看| 亚洲美女av网站| 久久99精品久久久久久青青91| 亚洲福利视频二区| 黑人巨大精品欧美一区二区免费| 久久亚洲电影天堂| 精品久久久久久久久久久久久| 成人国产在线激情| 一本一道久久a久久精品逆3p| 久久久久国产精品一区| 欧美一级黄色网| 操人视频在线观看欧美| 久久理论片午夜琪琪电影网| 欧美极品美女视频网站在线观看免费| 狠狠躁18三区二区一区| 亚洲精品中文字幕av| 成人黄色短视频在线观看| 精品一区二区三区三区| 精品福利一区二区| 欧美中文在线观看| 日韩美女av在线免费观看| 欧美性xxxx极品高清hd直播| 亚洲视频在线观看免费| 亚洲国产精品久久91精品| 欧美午夜片欧美片在线观看| 日韩一区二区欧美| 国产97免费视| 国产精品九九久久久久久久| 日韩精品一二三四区| 亚洲美女在线看| 国产成人福利夜色影视| 亚洲精品99999| 国产精品三级久久久久久电影| 久久国产精彩视频| 亚洲欧美日韩爽爽影院| 在线观看不卡av| 欧美激情久久久久| 日韩中文字幕在线| 亚洲精品日韩激情在线电影| 亚洲在线观看视频网站| 日韩黄色高清视频| 日本精品久久电影| 亚洲电影在线观看| 欧美性生活大片免费观看网址| 91精品国产91久久久久久吃药| 国产精品美女视频网站| 亚洲第一页中文字幕| www.欧美精品| 亚洲黄色av网站| 69久久夜色精品国产69乱青草| 国产小视频91| 日韩精品免费在线播放| 亚洲国产成人91精品| 亚洲欧美在线一区二区| 欧美性生活大片免费观看网址| 久久亚洲精品一区| 日韩三级影视基地| 欧美激情国产日韩精品一区18| 亚洲国产成人精品一区二区| 国产精品国产亚洲伊人久久| 日韩在线观看av| 亚洲电影免费观看高清| 欧美色视频日本版| 国产精品91久久久久久| 亚洲福利在线视频| 欧美在线观看一区二区三区| 国产免费一区二区三区在线能观看| 国产成人久久久精品一区| 久久视频在线视频| 欧美午夜精品伦理| 在线电影中文日韩| 欧美精品免费在线观看| 亚洲国产美女精品久久久久∴| 亚洲精品不卡在线| 国产精品吹潮在线观看| 精品久久久久久电影| 亚洲精品大尺度| 久久精品小视频| 日韩国产高清污视频在线观看| 精品视频在线播放| 日韩暖暖在线视频| 久久久久久久亚洲精品| 国产精品中文字幕久久久| 2018国产精品视频| 国产成人涩涩涩视频在线观看| 欧美极品少妇xxxxⅹ喷水| 国产精品综合网站| 成人福利网站在线观看| 国产在线a不卡| 国产精品扒开腿做爽爽爽的视频| 久久免费成人精品视频| 国产精品视频色| 国产精品久久久久久av福利软件| 欧美激情一区二区三级高清视频| 久久影院模特热| 国产精品美女无圣光视频| 国产亚洲精品日韩| 国产精品a久久久久久| 精品久久久国产精品999| 国产精品久久久av| 久久精品中文字幕| 国产精品久久久亚洲| 俺去了亚洲欧美日韩| 日本亚洲欧洲色α| 91国内免费在线视频| 欧美精品在线播放| 欧美日韩亚洲精品一区二区三区| 国产精品一区二区av影院萌芽| 国内免费精品永久在线视频| 亚洲高清不卡av| 国产视频福利一区| 国内外成人免费激情在线视频| 最近2019中文字幕mv免费看| 久久久久久久爱| 91久久夜色精品国产网站| 成人免费激情视频| 国内偷自视频区视频综合| 国产精品久久久久91| 精品少妇一区二区30p| 国产成人精品久久| 欧美肥老妇视频|