天天看點

java設計模式6--擴充卡模式(Adapter )

擴充卡模式(别名:包裝器)

将一個類的接口轉換成客戶希望的另外一個接口。adapter模式使得原本由于接口不相容而不能一起工作的那些類可以一起工作。

擴充卡模式是将一個類的接口(被适配者)轉換成客戶希望的另外一個接口(目标)的成熟模式,該模式中涉及有目标、被适配者和擴充卡。擴充卡模式的關鍵是建立一個擴充卡,這個擴充卡實作了目标接口并包含有被适配者的引用。

适用性

1.你想使用一個已經存在的類,而它的接口不符合你的需求。

2.你想建立一個可以複用的類,該類可以與其他不相關的類或不可預見的類(即那些接口可能不一定相容的類)協同工作。

3.(僅适用于對象adapter)你想使用一些已經存在的子類,但是不可能對每一個都進行子類化以比對它們的接口。對象擴充卡可以适配它的父類接口。

參與者

1.target 定義client使用的與特定領域相關的接口。

2.client 與符合target接口的對象協同。

3.adaptee 定義一個已經存在的接口,這個接口需要适配。

4.adapter 對adaptee的接口與target接口進行适配

模式的結構中包括三種角色:

目标(target)

被适配者(adaptee)

擴充卡(adapter) 

模式的uml類圖:

java設計模式6--擴充卡模式(Adapter )

使用者已有一個兩相的插座,但最近使用者又有了一個新的三相插座。使用者現在已經有一台洗衣機和一台電視機,洗衣機按着三相插座的标準配有三相插頭,而電視機按着兩相插座的标準配有兩相插頭。現在使用者想用新的三相插座來使用洗衣機和電視機。

1.目标(target) : threeelectricoutlet.java

2.被适配者(adaptee): twoelectricoutlet.java

3.擴充卡(adapter): treeelectricadapter.java

4.應用 application.java_1

4.應用 application.java_2

4.應用 application.java_3

•目标(target)和被适配者(adaptee)是完全解耦的關系。

•擴充卡模式滿足“開-閉原則”。當添加一個實作adaptee接口的新類時,不必修改adapter,adapter就能對這個新類的執行個體進行适配。