介面卡模式
可以增加介面的易用性,使得不相容的介面變得相容。
將乙個介面轉換成另外的介面,使得原本不相容的介面變得相容。比如你的介面設計存在缺點,不夠易用,不能復用但又希望復用的時候。
比如你要對接多個平台的介面他們互不相容的時候。
現實中也有很多介面卡,比如安卓蘋果的轉換頭,比如usb到type-c的轉換頭,都是因為兩邊的介面不同,不相容所以需要乙個介面卡。
下面是乙個手機類,現在需要充電,但是手機的充電需要typec介面。
/**
* 介面卡模式
* 手機類
*/class
mobile
}
現在只有乙個usb介面可以充電。
/**
* 介面卡模式
* 需要適配的類
* usb介面
*/class
usb}
我們增加乙個介面卡,也就是typec轉usb的頭。
/**
* 介面卡模式
* 介面卡介面
* typec介面
*/inte***ce
itypec
/** * 介面卡模式
* 介面卡類,typec轉換usb的介面卡
* typec介面
*/class
typec
implements
itypec
/** * 介面
*/public
function
typec()
}
我們的客戶端就可以使用這個介面卡了。
$mobile
=new
mobile()
;$mobile
->
charge
(new
typec
);
這是物件介面卡
,還有類介面卡,類介面卡的話需要繼承要適配的類。
/**
* 介面卡模式
* 介面卡類,typec轉換usb的介面卡
* typec介面
*/class
typec
extends
usbimplements
itypec
}
這幾個設計模式其實都差不多,你也可以說使用了typec**了usb。只是角度不同所以名字不同罷了。
雖然角度不同,但是我覺得核心都差不多。這幾個設計模式都是需要修改原有類的時候,沒有選擇修改,而是套了殼子,來擴充套件功能。這是一種好的思想,靈活運用思想更重要。
**放在了我的github上面。
設計模式之介面卡模式(類介面卡模式)
介面卡模式,即定義乙個包裝類,用於包裝不相容介面的物件 包裝類 介面卡adapter 被包裝物件 適配者adaptee 被適配的類 把乙個類的介面變換成客戶端所期待的另一種介面,從而使原本介面不匹配而無法一起工作的兩個類能夠在一起工作。介面卡模式的形式分為 類的介面卡模式和物件的介面卡模式 模式原理...
設計模式之 介面卡模式
1,介面卡模式把乙個類的介面變換成客戶端所期待的另一種介面,從而使原本因介面不匹配而無法一起工作的兩個類能夠在一起工作 2,介面卡模式有兩種 1 類的介面卡模式 介面卡類繼承源類 這樣介面卡類就繼承了源類有的方法 並實現目標介面,實現在源類中沒有而在介面中有的方法,從而實現介面卡類有目標介面的所有方...
設計模式之介面卡模式
介面卡模式定義 將乙個類的介面,轉換成客戶期望的另乙個介面。介面卡讓原本介面不相容的類可以合作無間。簡單定義 封裝物件,並提供不同的介面。簡單例子 鴨子介面 package headfirst.adapter.ducks public inte ce duck 具體鴨子 package headfi...