設計模式之介面卡模式

2021-09-17 23:17:32 字數 1677 閱讀 2834

參考

定義:

將乙個介面轉換成使用者希望的另乙個介面,使兩個不相容的介面可以一起工作

包含角色:

1.目標抽象類target

2.介面卡類 adapter

3.適配者類 adaptee

分類:

1.類介面卡

public class adapter extends adaptee implements target

}

2.物件介面卡

public class adapter extends target

}

共同優點:1.將目標類與適配者類解耦,引入乙個介面卡類來重用現有的適配者類,而無需修改源**

2.增加了類的透明性和復用性,把具體實現封裝在適配者類中

3.靈活性和擴充套件性都非常好,可以很方便的更換介面卡,符合開閉原則

類介面卡的缺點:一次只能適配乙個適配者類**換頭只能把usb轉換成固定孔數),不能將多個適配者類適配到乙個介面(不能多繼承)

物件介面卡的優點:可以把多個適配者類適配到目標介面(可以在建構函式中初始化多個類)

物件介面卡的缺點:與類介面卡相比,想要換掉適配者類裡面的方法不容易,(類介面卡是繼承,直接重寫,物件介面卡是引用)

適用環境:1.系統需要使用現有的類,而這些類的介面不符合系統的需要

2.想要建立乙個重複使用的類,把那些沒有太多關係的類關聯進來一起工作

(1)想要使用乙個已經存在的類,但是它卻不符合現有的介面規範,導致無法直接去訪問,這時建立乙個介面卡就能間接去訪問這個類中的方法。

(2)我們有乙個類,想將其設計為可重用的類(可被多處訪問),我們可以建立介面卡來將這個類來適配其他沒有提供合適介面的類。

以上兩個場景其實就是從兩個角度來描述一類問題,那就是要訪問的方法不在合適的介面裡,乙個從介面出發(被訪問),乙個從訪問出發(主動訪問)。

特別注意:需要針對抽象目標類進行程式設計

擴充套件:1.預設介面卡,即實現介面的抽象類,

2.雙向介面卡,把a適配成b,b適配成a

自我猜想:

/** 介面卡

* @author administrator

* */

public class adaptermodel

static abstract class userservice2

static inte***ce cityservice

static class cityserviceimpl implements cityservice

} static class city

//類介面卡

static class userserviceimpl extends cityserviceimpl implements userservice

} //物件介面卡

static class userserviceimpl2 extends userservice2

}}

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

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

設計模式之 介面卡模式

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

設計模式之介面卡模式

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