理解23種設計模式 建立模式 介面卡模式

2021-10-16 17:13:39 字數 2143 閱讀 6752

介面卡模式介紹

介面卡模式(adapter)的定義如下:將乙個類的介面轉換成客戶希望的另外乙個介面,使得原本由於介面不相容而不能一起工作的那些類能一起工作。

在現實生活中,經常出現兩個物件因介面不相容而不能在一起工作的例項,這時需要第三者進行適配。例如,講中文的人同講英文的人對話時需要乙個翻譯,用直流電的膝上型電腦接交流電源時需要乙個電源介面卡,用計算機訪問照相機的 sd 記憶體卡時需要乙個讀卡器等。

優點

1.客戶端通過介面卡可以透明地呼叫目標介面。

2.復用了現存的類,程式設計師不需要修改原有**而重用現有的適配者類。

3.將目標類和適配者類解耦,解決了目標類和適配者類介面不一致的問題。

4.在很多業務場景中符合開閉原則。

缺點

介面卡編寫過程需要結合業務場景全面考慮,可能會增加系統的複雜性。

增加**閱讀難度,降低**可讀性,過多使用介面卡會使系統**變得凌亂。

介面卡模式的實現

結構

目標(target)介面:當前系統業務所期待的介面,它可以是抽象類或介面。

適配者(adaptee)類:它是被訪問和適配的現存元件庫中的元件介面。

介面卡(adapter)類:它是乙個轉換器,通過繼承或引用適配者的物件,把適配者介面轉換成目標介面,讓客戶按目標介面的格式訪問適配者。

應用場景

public class musicplayer

}inte***ce mediaplayer

class mp4player

}//**介面卡

class mediaadapter implements mediaplayer

}

輸出結果:上面的是物件結構模式也算最常用的,還有一種是下面的類結構模式

class mediaadapter extends mp4player implements mediaplayer

}

區別

介面卡模式分為類結構型模式和物件結構型模式兩種,前者類之間的耦合度比後者高,且要求程式設計師了解現有元件庫中的相關元件的內部結構,所以應用相對較少些。

應用場景2

大家可能上面的例子理解不到位,我們看下乙個關於執行緒的例子

執行緒的建立有三種,實現callable,可以讓call方法有返回值,可是他建立起來比較麻煩,需要乙個執行服務,用的也是比較少,那我們可不可以使用適配者模式,建立callable執行緒,和建立runnable執行緒一樣簡單呢

class task implements callable

public long call()

system.out.

println

("結果"

+r);

return r;

}}

要知道上面**如果直接像runnable介面建立一樣

thread thread = new thread(callable)); 肯定是報錯的

我們加乙個介面卡 就可以了 只是舉例子 不要這樣用哦,

目標介面 runnable

適配者 task實現callable介面的實現類

介面卡這樣起來就看起來就容易了,適配這模式就是讓本不能一起工作的在一起工作

public class test03

}//需要執行服務

class task implements callable

public long call()

system.out.

println

("結果"

+r);

return r;}}

class runnableadapter implements runnable

// 實現指定介面:

public void run()

catch

(exception e)

}}

23種設計模式 介面卡模式

1 概念 定義 介面卡模式,是指將乙個類的介面轉換成客戶期望的另外乙個介面,是原本的介面不相容的類,可以一起工作。它是結構型模式的一種。建立型模式 結構型模式 行為模式 單例模式 模式 模板方法模式 原型模式 介面卡模式 策略模式 工廠方法模式 橋接模式 命令模式 抽象工廠模式 裝飾模式 責任鏈模式...

23種設計模式(2) 介面卡模式

介面卡模式就是將原來的方法進行包裝,轉化為新的方法,uml圖如下 banner類 public class banner public void showwithparen public void showwithaster print介面 public inte ce print 介面卡 publ...

23種設計模式05 介面卡模式

目標介面 targetable public inte ce targetable 介面卡,他要具有新的輸出口和舊的輸出口功能,使用繼承 繼承只能是單繼承 實現另乙個介面 public class adapter extends source implements targetable public...