優點:api有變化,我們僅需修改客戶端依賴的介面卡類就可以,不用修改、暴露第三方類本身
場景:解決類之間的相容問題,**依賴一些外部的api,或者依賴一些可能會經常更改的類,那麼應該考慮用介面卡模式。
例子:需要使用乙個支付寶支付類
class alipay出現問題:假設例項化alipay類完成支付功能,這樣客戶端**可能很多,支付寶支付類公升級為sendpayment,我們自己需要改動地方很多}// 客戶端**
$alipay = new alipay();
$alipay->sendpayment();
解決方案:
客戶端呼叫統一的類方法,我們先定義乙個介面卡介面
/**在新建乙個* 介面卡介面,所有的支付介面卡都需實現這個介面。
* 不管第三方支付實現方式如何,對於客戶端來說,都
* 用pay()方法完成支付
*/inte***ce payadapter
alipayadapter
介面卡類,在pay()
中轉換alipay
的支付功能,如下:
/**客服端使用* 支付寶介面卡
*/class alipayadapter implements payadapter
}
// 客戶端**這樣,當$alipay = new alipayadapter();
// 用pay()方法實現支付
$alipay->pay();
alipay
的支付方法改變,只需要修改alipayadapter
類就可以了。 介面卡模式(類介面卡 物件介面卡)
做個筆記 引用 public inte ce usb public inte ce psp public class usber implements usb 類介面卡 psp適用usb介面 public class usbadapter extends usber implements psp 物...
介面卡模式 預設介面卡,類介面卡,物件介面卡
模式思想 改變乙個類的對外介面 增加或減少 以滿足不同外部呼叫者的需求 角色成員 目標介面 target 客戶所期待的介面。目標可以是具體的或抽象的類,也可以是介面。需要適配的類 adaptee 需要適配的類或適配者類。介面卡 adapter 通過包裝乙個需要適配的物件,把原介面轉換成目標介面。適配...
設計模式 介面卡模式 類介面卡 物件介面卡
乙個小例子,便於理解,上 這是我們造的。現在想用這個方法。public class adaptee 類介面卡。對我們想要的方法封裝一下,target就能像之前一樣,呼叫request方法即可。public class adapter1 extends adaptee implements targe...