介面卡是用於已有類,而不想改動的情況下更換介面。該模式與裝飾器模式很像,但應用目的不同。
本篇例子:
美國電器電壓是110v,中國是220v,你在美國想要使用中國的電器,就要有乙個介面卡將110v轉為220v,不然電器無法使用。(emmm,怎麼念起來怪怪的,但是我又沒有證據)
第一種方式:物件介面卡
inte***ce target
/** * class adaptee 被適配者
*/class adaptee
public function other()
}/**
* class adapter 介面卡
*/class adapter implements target
public function volt110()
public function other()
public function volt220()
}$adapter = new adapter(new adaptee());
$adapter->volt110(); // 想用110v就用110v,該類(adaptee)在系統已存在並大規模使用了,修改它的邏輯判斷與傳參,可能會導致某些地方異常。
$adapter->volt220(); // 想用220v就增加22ov,在需要增加新的同型別操作時,但處理的資料不同,增加乙個介面,再用介面卡類(adapter)實現該介面。使他們為同乙個介面。
$adapter->other(); // 假裝有其它操作
這樣就可以呼叫同乙個介面了。
不這麼做,你就需要在adaptee
類之外再建乙個220v的類(adapter
),用的時候再new。而現在,你只需要把之前的加到新建的介面中,就可統一呼叫。
總的來說,就是把新的類(方法本來就可以放同個類裡)用介面規範了命名,使要增加的類組成乙個介面,統一呼叫。
第二種方式:類介面卡。能夠更好的理解上面的說法
inte***ce target2
class adaptee2
public function other()
}class adapter2 extends adaptee2 implements target2
}$adapter2 = new adapter2();
$adapter2->volt110();
$adapter2->volt220();
$adapter2->other();
設計模式 七 介面卡模式
adapter pattern 將乙個類的介面轉換成客戶希望的另外乙個介面。adapter 模式使得原本由於介面不相容而不能一起工作的那些類可以一起工作。介面卡模式將乙個類的介面適配成使用者所期待的。乙個介面卡通常允許因為介面不相容而不能一起工作的類能夠在一起工作,做法是將類自己的介面包裹在乙個已存...
設計模式入門 介面卡模式(php版)
場景 還記得在講策略模式時的鴨子嗎?這次它們又要閃亮登場了。這一次的問題是這樣的,鴨子漸漸不夠用了,這時有些黑心商家想要把火雞偽造成鴨子,火雞和鴨子的uml類圖如下圖所示 我們現在要實現的目標在於 將wildturkey中的fly和gobble方法偽裝成duck中的fly和quack方法,又不能直接...
PHP設計模式(介面卡模式)
設計動機 假如我們又這樣軟體系統,我們希望它能夠和乙個新的庫搭配使用,但是這個庫所提供的介面與我們的軟體系統不相容,我們不想改變現有 就能解決這個問題,怎麼辦?這個時候我們就需要將這個新的庫介面轉換成我們所需要的介面,這就是介面卡模式設計動機。模式定義 介面卡模式就是將乙個類的介面,轉換成客戶期望的...