設計模式之介面卡模式

2021-12-30 02:45:08 字數 1256 閱讀 1584

設計模式之介面卡模式:把乙個類的介面變換成客戶端所期待的另一種介面,從而使原本因介面不匹配而無法在一起工作的兩個類能夠在一起工作。

示例:定義目標介面(真正所期待的功能):

/*** 電腦充電介面

* @author pc

* */

public inte***ce computerpower

定義提供功能介面(當前已提供的功能):/**

* 家庭供電介面

* @author pc

* */

public inte***ce familypower

他的真是實現類,家裡面的乙個插座:/**

* 家裡面的乙個插座

* @author pc

* */

public class familysocket implements familypower

}到了這裡我們就可以看出來了,因為當前所提供的的介面和功能,並不是我們需要的,我們沒辦法直接用,也就是所謂的不相容,所以我們需要乙個介面卡。/**

* 電腦電源介面卡

* @author pc

* */

public class poweradapter implements computerpower

/*** 將220v電轉換為5v

*/public int getpower()

}我們真正需要功能的實現類這樣寫:/**

* 我的mac電腦

* @author pc

* */

public class mac implements computerpower

/*** 我需要5v的電

*/public int getpower()

}可以看出來,這樣我們就可以成功的適配了。

疑問:為什麼非要讓介面卡去持有familypower引用,然後去轉換呢?感覺直接讓mac去持有,然後在getpower的時候轉換就行了。

其實還是乙個開閉原則,我們想要盡量不去修改主功能**,比如mac類,以及提供220v電壓的familysocket類,去修改已經實現好的功能類會出現不可預期的錯誤。

所以我們就在他們中間介入一層adapter,adapter是乙個可以隨時被變化的類,不影響真正功能的流程的,比如android裡面的baseadapter,我們總是在構造需要樣式的listview的時候取建立乙個適合的baseadapter,根據樣式不同以及實體資料的不同而會建立出各種各樣的adapter,而listview的繪製**根本不用變的。

設計模式之介面卡模式(類介面卡模式)

介面卡模式,即定義乙個包裝類,用於包裝不相容介面的物件 包裝類 介面卡adapter 被包裝物件 適配者adaptee 被適配的類 把乙個類的介面變換成客戶端所期待的另一種介面,從而使原本介面不匹配而無法一起工作的兩個類能夠在一起工作。介面卡模式的形式分為 類的介面卡模式和物件的介面卡模式 模式原理...

設計模式之 介面卡模式

1,介面卡模式把乙個類的介面變換成客戶端所期待的另一種介面,從而使原本因介面不匹配而無法一起工作的兩個類能夠在一起工作 2,介面卡模式有兩種 1 類的介面卡模式 介面卡類繼承源類 這樣介面卡類就繼承了源類有的方法 並實現目標介面,實現在源類中沒有而在介面中有的方法,從而實現介面卡類有目標介面的所有方...

設計模式之介面卡模式

介面卡模式定義 將乙個類的介面,轉換成客戶期望的另乙個介面。介面卡讓原本介面不相容的類可以合作無間。簡單定義 封裝物件,並提供不同的介面。簡單例子 鴨子介面 package headfirst.adapter.ducks public inte ce duck 具體鴨子 package headfi...