介面卡模式

2021-07-02 20:01:39 字數 1089 閱讀 4089

在軟體系統中,為針對應用環境的變化,將「一些現存的物件」放在新的環境中應用,能利用現有物件的良好實現,同時又能滿足新的應用環境所要求的介面?這就是adapter 模式。

log.writelog(「logging message!」);

當軟體系統開發進行到一半時,處於某種原因不能繼續使用該日誌記錄工具了,需要採用另外乙個日誌記錄工具,它同樣也支援資料庫日誌記錄messagelog和文字檔案記錄exceptionlog兩種方式,只不過它提供給我們的api介面是write()方法,使用方法如下:

log.write(「logging message!」);

優點:可以在不修改原有**的基礎上來復用現有類,很好地符合 「開閉原則」可以重新定義adaptee(被適配的類)的部分行為,因為在類介面卡模式中,adapter是adaptee的子類僅僅引入乙個物件,並不需要額外的字段來引用adaptee例項(這個即是優點也是缺點)。

缺點:

用乙個具體的adapter類對adaptee和target進行匹配,當如果想要匹配乙個類以及所有它的子類時,類的介面卡模式就不能勝任了。因為類的介面卡模式中沒有引入adaptee的例項,光呼叫this.specificrequest方法並不能去呼叫它對應子類的specificrequest方法。

採用了「多繼承」的實現方式,帶來了不良的高耦合。所以一般不用類介面卡模式

優點:

可以在不修改原有**的基礎上來復用現有類,很好地符合 「開閉原則」(這點是兩種實現方式都具有的)

採用 「物件組合」的方式,更符合松耦合。

缺點:

使得重定義adaptee的行為較困難,這就需要生成adaptee的子類並且使得adapter引用這個子類而不是引用adaptee本身。

重點應用物件介面卡模式

1、系統需要復用現有類,而該類的介面不符合系統的需求

2、想要建立乙個可重複使用的類,用於與一些彼此之間沒有太大關聯的一些類,包括一些可能在將來引進的類一起工作。

在介面卡模式中,介面卡可以是抽象類,並介面卡模式的實現是非常靈活的,我們完全可以將adapter模式中的「現存物件」作為新的介面方法引數,介面卡類可以根據引數引數可以返回乙個合適的例項給客戶端。

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

做個筆記 引用 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...