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

2021-08-28 20:26:21 字數 2382 閱讀 9311

場景

您的儲存卡中有一些**,需要將它們傳輸到計算機上。為了傳輸它們,您需要某種與計算機埠相容的介面卡,以便將儲存卡連線到計算機。在這種情況下,讀卡器是介面卡。另乙個例子是著名的電源介面卡; 三腳插頭不能連線到雙管插座,需要使用電源介面卡使其與雙叉插座相容。另乙個例子是翻譯人員將乙個人所說的話翻譯成另乙個人

維基百科

允許將現有類的介面用作另乙個介面。它通常用於使現有類與其他類一起工作而無需修改其源**。(介面卡模式允許您將其他不相容的物件包裝在介面卡中,以使其與另乙個類相容。)

以下示例場景

漢語翻譯成英語

通過繼承來實現介面卡功能

public

class

speakchinese

}

public

inte***ce

speakenglish

public

class

translation

extends

speakchinese

implements

speakenglish

}

@test

public

void

clazz()

類圖如下所示

類介面卡的把speakchinese中的方法暴露給了介面卡,使用起來成本增加

原理:通過組合來實現介面卡功能。

public

class

translationobjectadapter

implements

speakenglish

@override

public

void

speakenglish()

}

測試

@test

public

void

objecttest()

類圖如下:

物件介面卡和類介面卡其實算是同一種思想,只不過實現方式不同,對於介面卡模式用法還是有改變的

原理:通過抽象類來實現適配,這種適配稍別於上面所述的適配

現在不只是需要翻譯成英語,需要翻譯成日語、法語或西班牙語或者需要這幾種語言任意組合

建立介面

public

inte***ce

speakmany

中間介面卡

public

abstract

class

implements

speakmany

@override

public

void

speakjpanese()

@override

public

void

speakspanish()

@override

public

void

speakenglish()

@override

public

void

speakfrances()

}

雙語

public

class

speakspanishandenglish

extends

@override

public

void

speakenglish()

@override

public

void

speakfrances()

}

測試

@test

public

void()

類圖如下:

介面卡模式Adapt

例子 牆上的插座為三孔介面,但是很多家電都是雙孔標準,這個時候就需要乙個介面卡,讓雙孔的家電通過介面卡後也可以接入三孔介面的插座 兩種介面卡 物件介面卡 三孔插座 雙孔插座 使用雙孔插座的電視 物件介面卡 author wjm date 2020 6 16 17 10 public class tv...

介面卡模式(Adapt) 設計模式(六)

作用 將乙個類的介面轉換成客戶希望的另外乙個介面。adapt 模式使得原本由於介面不相容而不能一起工作的那些類可以一起工作。解析 adapt 模式其實就是把完成同樣的乙個功能但是介面不能相容的類橋接在一起使之可以在一起工作,這個模式使得復用舊的介面成為可能.實現 adapt 模式有兩種實現辦法,一種...

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

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