介面卡模式 Adapter Pattern

2021-08-26 20:16:01 字數 1513 閱讀 6999

目錄定義

角色 分類

優點 缺點

適用場景 小結

將乙個類的介面轉換成客戶希望的另外乙個介面。介面卡模式使得原本由於介面不相容而不能一起工作的那些類可以一起工作。

目標(target

)角色:

這就是所期待得到的介面,也就是這類的介面是符合我們要求的。 源(

adapee

)角色:

我們要使用的介面,但是這個介面不符合我們的要求,也就是現在需要適配的介面。

介面卡(

adaper

)角色:

介面卡類是介面卡模式的核心。介面卡把源介面轉換成目標介面。顯然,這一角色不可以是介面,而必須是具體類。 1

、類介面卡模式

class adaptee 

}/*這個是目標角色,所期待的介面*/

inte***ce target

現在想要實現這個target介面,但是不想重構,想要用上已有的adaptee類,這時可以定義乙個介面卡類,繼承想要使用的類,並且實現期待的介面。 

class adapter extends adaptee implements target

}

這樣,使用介面卡類和實現目標介面就完成了計畫,測試:

public class test

}

2、物件介面卡模式

介面卡類關聯已有的adaptee類,並且實現標準介面,這樣做的好處是不再需要繼承。

class adapter implements target

public void request()

}

我們可以想到,此時輸出結果和類介面卡模式是相同的,測試:

public class test 

}

區別:

物件的介面卡模式不是使用繼承關係連線到adaptee類,而是使用委派關係連線到adaptee類。

復用性

系統需要使用現有的類,而此類的介面不符合系統的需要。那麼通過介面卡模式就可以讓這些功能得到更好的復用。

擴充套件性在實現介面卡功能的時候,可以自由呼叫自己開發的功能,從而自然地擴充套件系統的功能。

過多的使用介面卡,會讓系統非常零亂,不易整體進行把握。比如,明明看到呼叫的是a介面,其實內部被適配成了b介面的實現。所以介面卡模式不適合在詳細設計階段使用它,它是一種補償模式,專用來在系統後期擴充套件、修改時所用。

1、已經存在的類的介面不符合我們的需求;

2、建立乙個可以復用的類,使得該類可以與其他不相關的類或不可預見的類協同工作;

3、使用一些已經存在的子類而不需要對其進行子類化來匹配介面。

4、舊的系統開發的類已經實現了一些功能,但是客戶端卻只能以另外介面的形式訪問,但我們不希望手動更改原有類的時候。

介面卡模式不適合在詳細設計階段使用它,它是一種補償模式,專用來在系統後期擴充套件、修改時所用,介面卡模式更像是一種補救措施。

介面卡模式(類介面卡 物件介面卡)

做個筆記 引用 public inte ce usb public inte ce psp public class usber implements usb 類介面卡 psp適用usb介面 public class usbadapter extends usber implements psp 物...

介面卡模式 預設介面卡,類介面卡,物件介面卡

模式思想 改變乙個類的對外介面 增加或減少 以滿足不同外部呼叫者的需求 角色成員 目標介面 target 客戶所期待的介面。目標可以是具體的或抽象的類,也可以是介面。需要適配的類 adaptee 需要適配的類或適配者類。介面卡 adapter 通過包裝乙個需要適配的物件,把原介面轉換成目標介面。適配...

設計模式 介面卡模式 類介面卡 物件介面卡

乙個小例子,便於理解,上 這是我們造的。現在想用這個方法。public class adaptee 類介面卡。對我們想要的方法封裝一下,target就能像之前一樣,呼叫request方法即可。public class adapter1 extends adaptee implements targe...