溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

java適配器模式怎么實現(xiàn)

發(fā)布時間:2022-01-05 15:32:50 來源:億速云 閱讀:117 作者:iii 欄目:大數(shù)據(jù)

本篇內(nèi)容介紹了“java適配器模式怎么實現(xiàn)”的有關(guān)知識,在實際案例的操作過程中,不少人都會遇到這樣的困境,接下來就讓小編帶領(lǐng)大家學(xué)習(xí)一下如何處理這些情況吧!希望大家仔細(xì)閱讀,能夠?qū)W有所成!

定義:

將一個類的接口轉(zhuǎn)換成客戶希望的另外一個接口。適配器模式使得原本由于接口不兼容而不能一起工作的那些類可以一起工作。

角色:

目標(biāo)(Target)角色:這就是所期待得到的接口,也就是這類的接口是符合我們要求的。

  源(Adapee)角色:我們要使用的接口,但是這個接口不符合我們的要求,也就是現(xiàn)在需要適配的接口。

適配器(Adaper)角色:適配器類是適配器模式的核心。適配器把源接口轉(zhuǎn)換成目標(biāo)接口。顯然,這一角色不可以是接口,而必須是具體類。

分類:

1,  類適配器模式

class Adaptee {         
   publicvoid specificRequest() {         System.out.println("特殊請求,這個是源角色");    } }
/*這個是目標(biāo)角色,所期待的接口*/

interface Target {        
   publicvoid request(); }

   現(xiàn)在想要實現(xiàn)這個Target接口,但是不想重構(gòu),想要用上已有的Adaptee類,這時可以定義一個適配器類,繼承想要使用的類,并且實現(xiàn)期待的接口。

class Adapter extends Adaptee implementsTarget{
         publicvoid request() {
                   super.specificRequest();
         }
}

這樣,使用適配器類和實現(xiàn)目標(biāo)接口就完成了計劃,測試:

public class Test{
         publicstatic void main(String[] args) {
                   //使用特殊功能類,即適配類
                   Targetadapter = new Adapter();
                   adapter.request();
         }
}

2,  對象適配器模式

適配器類關(guān)聯(lián)已有的Adaptee類,并且實現(xiàn)標(biāo)準(zhǔn)接口,這樣做的好處是不再需要繼承。

class Adapter implements Target{
         privateAdaptee adaptee;

         publicAdapter (Adaptee adaptee) {
                   this.adaptee= adaptee;
         }

         publicvoid request() {
                   this.adaptee.specificRequest();
         }
}

我們可以想到,此時輸出結(jié)果和類適配器模式是相同的,測試:

public class Test{
         publicstatic void main(String[] args) {
                   Targetadapter = new Adapter(new Adaptee());
                   adapter.request();
         }
}

區(qū)別:

  對象的適配器模式不是使用繼承關(guān)系連接到Adaptee類,而是使用委派關(guān)系連接到Adaptee類。

優(yōu)點:

復(fù)用性

系統(tǒng)需要使用現(xiàn)有的類,而此類的接口不符合系統(tǒng)的需要。那么通過適配器模式就可以讓這些功能得到更好的復(fù)用。

擴(kuò)展性

在實現(xiàn)適配器功能的時候,可以自由調(diào)用自己開發(fā)的功能,從而自然地擴(kuò)展系統(tǒng)的功能。

缺點:

    過多的使用適配器,會讓系統(tǒng)非常零亂,不易整體進(jìn)行把握。比如,明明看到調(diào)用的是A接口,其實內(nèi)部被適配成了B接口的實現(xiàn)。所以適配器模式不適合在詳細(xì)設(shè)計階段使用它,它是一種補(bǔ)償模式,專用來在系統(tǒng)后期擴(kuò)展、修改時所用。

適用場景:

1、已經(jīng)存在的類的接口不符合我們的需求;

2、創(chuàng)建一個可以復(fù)用的類,使得該類可以與其他不相關(guān)的類或不可預(yù)見的類協(xié)同工作;

3、使用一些已經(jīng)存在的子類而不需要對其進(jìn)行子類化來匹配接口。

4、舊的系統(tǒng)開發(fā)的類已經(jīng)實現(xiàn)了一些功能,但是客戶端卻只能以另外接口的形式訪問,但我們不希望手動更改原有類的時候。

“java適配器模式怎么實現(xiàn)”的內(nèi)容就介紹到這里了,感謝大家的閱讀。如果想了解更多行業(yè)相關(guān)的知識可以關(guān)注億速云網(wǎng)站,小編將為大家輸出更多高質(zhì)量的實用文章!

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI