介面卡模式的應用場景
介面卡模式(adapter pattern)是指將乙個類的介面轉換成客戶期望的另乙個介面,使原本的介面不相容的類可以一起工作,屬於結構型設計模式。
介面卡適用於以下幾種業務場景:
1、已經存在的類,它的方法和需求不匹配(方法結果相同或相似)的情況。
2、介面卡模式不是軟體設計階段考慮的設計模式,是隨著軟體維護,由於不同產品、不同廠家造成功能類似而介面不相同情況下的解決方案。有點亡羊補牢的感覺。
在中國民用電都是220v 交流電,但我們手機使用的鋰電池使用的5v 直流電。因此,我們給手機充電時就需要使用電源介面卡來進行轉換。下面我們有**來還原這個生活場景,建立ac220 類,表示220v 交流電:
public class ac220
}
建立dc5 介面,表示5v 直流電的標準:
public inte***ce dc5
建立電源介面卡poweradapter 類
public class poweradapter implements dc5
@override
public int outputdc5v()
public static void main(string args)
}
執行結果
介面卡模式在原始碼中的體現
spring 中介面卡模式也應用得非常廣泛,例如:springaop 中的advisoradapter 類,它有三個實現類methodbeforeadviceadapter、afterreturningadviceadapter 和throwsadviceadapter,先來看頂層介面advisoradapter 的源**:
public inte***ce advisoradapter
class methodbeforeadviceadapter implements advisoradapter, serializable
public boolean supportsadvice(advice advice)
public methodinterceptor getinterceptor(advisor advisor)
}
spring 會根據不同的aop 配置來確定使用對應的advice,跟策略模式不同乙個方法可以同時擁有多個advice。還有springmvc 中的handleradapter 類
介面卡模式的優缺點
優點:1、能提高類的透明性和復用,現有的類復用但不需要改變。
2、目標類和介面卡類解耦,提高程式的擴充套件性。
3、在很多業務場景中符合開閉原則。
缺點:1、介面卡編寫過程需要全面考慮,可能會增加系統的複雜性。
2、增加**閱讀難度,降低**可讀性,過多使用介面卡會使系統**變得凌亂
設計模式 介面卡模式 類介面卡 物件介面卡
乙個小例子,便於理解,上 這是我們造的。現在想用這個方法。public class adaptee 類介面卡。對我們想要的方法封裝一下,target就能像之前一樣,呼叫request方法即可。public class adapter1 extends adaptee implements targe...
設計模式之介面卡模式(類介面卡模式)
介面卡模式,即定義乙個包裝類,用於包裝不相容介面的物件 包裝類 介面卡adapter 被包裝物件 適配者adaptee 被適配的類 把乙個類的介面變換成客戶端所期待的另一種介面,從而使原本介面不匹配而無法一起工作的兩個類能夠在一起工作。介面卡模式的形式分為 類的介面卡模式和物件的介面卡模式 模式原理...
設計模式 介面卡模式
01 02 author rollen holt 設計模式之 介面卡模式 03 04 05 inte ce window 11 12 abstract class windowadapter 16 public void close 19 public void activated 22 publi...