Java適配器設(shè)計(jì)模式
定義
適配器模式(Adapter Pattern)是結(jié)構(gòu)型設(shè)計(jì)模式的一種,適配器模式的定義是:將一個(gè)類的接口轉(zhuǎn)換成客戶希望的另外一個(gè)接口,使得原本由于接口不兼容而不能一起工作的那些類能一起工作。
對(duì)應(yīng)角色
適配器模式中主要存在三個(gè)角色:
- 目標(biāo)(Target)接口:當(dāng)前系統(tǒng)業(yè)務(wù)所期待的接口,它可以是抽象類或接口,也可以是具體類。
- 適配者(Adaptee)類:它是被訪問(wèn)和適配的現(xiàn)存組件庫(kù)中的組件接口。
- 適配器(Adapter)類:它是一個(gè)轉(zhuǎn)換器,通過(guò)繼承或引用適配者的對(duì)象,把適配者接口轉(zhuǎn)換成目標(biāo)接口,讓客戶按目標(biāo)接口的格式訪問(wèn)適配者。
優(yōu)缺點(diǎn)
優(yōu)點(diǎn)
文章來(lái)源:http://www.zghlxwxcb.cn/news/detail-555304.html
- 將目標(biāo)類和適配者類解耦。
- 增加了類的透明性和復(fù)用性,將具體的實(shí)現(xiàn)封裝在適配者類中,對(duì)于客戶端類來(lái)說(shuō)是透明的,而且提高了適配者的復(fù)用性。
- 靈活性和擴(kuò)展性都非常好,符合開(kāi)閉原則。3
缺點(diǎn)
文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-555304.html
- 對(duì)于類適配器來(lái)說(shuō),更換適配器的實(shí)現(xiàn)過(guò)程比較復(fù)雜。3
應(yīng)用場(chǎng)景
- 系統(tǒng)需要使用現(xiàn)有的類,而這些類的接口不符合系統(tǒng)的需要。
- 想要建立一個(gè)可以重復(fù)使用的類,用于與一些彼此之間沒(méi)有太大關(guān)聯(lián)的一些類,包括一些可能在將來(lái)引進(jìn)的類一起工作。
- 需要一個(gè)統(tǒng)一的輸出接口,而輸入端的類型不可預(yù)知。1
實(shí)例
// 目標(biāo)接口
interface Target {
void request();
}
// 適配者類
class Adaptee {
public void specificRequest() {
System.out.println("適配者中的業(yè)務(wù)代碼被調(diào)用!");
}
}
// 類適配器類
class ClassAdapter extends Adaptee implements Target {
public void request() {
specificRequest();
}
}
// 對(duì)象適配器類
class ObjectAdapter implements Target {
private Adaptee adaptee;
public ObjectAdapter(Adaptee adaptee) {
this.adaptee = adaptee;
}
public void request() {
adaptee.specificRequest();
}
}
// 客戶端代碼
public class AdapterPattern {
public static void main(String[] args) {
System.out.println("類適配器模式測(cè)試:");
Target target = new ClassAdapter();
target.request();
System.out.println("對(duì)象適配器模式測(cè)試:");
Adaptee adaptee = new Adaptee();
Target target2 = new ObjectAdapter(adaptee);
target2.request();
}
}
到了這里,關(guān)于Java適配器設(shè)計(jì)模式的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!