设计模式的理解: 适配器模式 Adapter
生活随笔
收集整理的這篇文章主要介紹了
设计模式的理解: 适配器模式 Adapter
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
? ? ?適配器模式,是為了轉變接口方式的一種模式。即通過一個中介,作為兩個不兼容接口之間的橋梁(老接口與新接口),使原先的老對象不僅可以使用自身的老接口,而且還可以通過適配器類,用新接口對老對象進行操作。
實現方式如下:
所謂的Target接口就是用戶所希望使用的新接口,Adaptee 就是我們原先的老對象。而Adapter 為適配器。上圖表示適配器類實現了目標接口Target,它還包含了Adaptee對象,以方便在新接口中調用子對象子對象Adaptee的方法。
例如,對于電子設備來講,必須輸入標準電壓和頻率才可以正常運轉。然而每個國家的標準并不一樣,例如英國的標準電壓使230V ,而中國的標準電壓是220V。怎么樣讓英國的標準電器設備能在中國良好的工作,這中間就需要一個“中介”,讓輸入到新接口的電壓是220V,經過處理后,原先的老對象接收到的230V。又例如,電器接收的是電信號,而聲控電器輸入的是聲音信號,聲音信號變成電信號的過程中就需要依賴適配器。
適配器模式示例如下:
//聲音信號接收器的接口 class ISoundSignalReceiver{ public :void receiver(SoundSignal s)=0; } //電器設備抽象類 class Electrical{ public:void work(ElectricalSignal e)=0; }//電器設備能夠接收聲音信號的適配器類 class Adapter :public ISoundSignalReceiver{ private:Electrical * electrical; protected:virtual ElectricalSignal SoundToElectrical(SoundSignal s){// 聲音信號轉電信號的函數(可重載)......}public:Adapter(Electrical & el){ electrical=el; }//實現新的接口void receiver(SoundSignal s){ElectricalSignal eSignal = SoundToElectrical(s);electrical->work(eSignal );} }實現具體的抽象類,和使用示例
//電燈 class Lamp:public Electrical{ public:void work(ElectricalSignal e){// .. 發熱發光..} }//電扇 class Fan:public Electrical{ public:void work(ElectricalSignal e){// .. 轉動..} }//使用示例 void mainProcess(SoundSignal soundSignal ){Lamp lamp; //電燈Fan fan ; //電扇//聲控電燈Adapter soundlamp(lamp); soundlamp.receiver(soundSignal);//聲控電扇Adapter soundFan(fan); soundFan.receiver(soundSignal); }?
?
?
總結
以上是生活随笔為你收集整理的设计模式的理解: 适配器模式 Adapter的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 设计模式的理解: 代理模式(Proxy)
- 下一篇: 设计模式理解:中介者模式(Mediato