先看乙個圖
mybatis中的cache
通過對 cache的實現進行了進一步包裝,就可以實現多種多樣的功能,如lru, fifo等快取淘汰策略
點選 synchronizedcache 可以看到,這個是給 方法加上了 synchronized , 不同的包裝類,實現了對應特定業務的功能
優點:
能提高類的透明性和復用,現有的類復用,但不需要改變目標類和介面卡類解耦,提高程式的擴充套件性符合開閉原則
缺點:
介面卡編寫需要全面考慮,可能增加系統的複雜性增加系統**可讀的難度
介面卡的種類:
物件介面卡類介面卡
介面卡模式可以 結合 門面模式對比看看:
都是對現有的類進行封裝, 門面模式是定義乙個新的介面
而介面卡模式則是復用 介面(舊介面,舊實現)的方法
從粒度上看:
外觀模式是用來適配整個子系統,而介面卡模式的粒度更小
裝飾者模式 跟 介面卡模式
裝飾者模式,為原物件增加功能時使用,裝飾者模式是針對介面實現的,下面是裝飾者模式的結構圖。針對compoment這個介面進行實現,classa跟decorator都實現compoment這個介面,確保覆寫func 方法,裝飾者本身是不提供功能的,它只是對原有功能的追加,所以裝飾者必須要持有原有的物件...
介面卡 Adapter 模式 包裝模式
介面卡 adapter 模式也叫包裝模式,主要有兩種實現形式 a 類介面卡模式 b 物件介面卡模式 都有三種角色 1 target 供客戶端呼叫 2 adaptee 具體呼叫角色 3 adapter 包裝角色 a 類介面卡模式 繼承 package com.pattern.adapter.class...
裝飾者模式 橋接模式 介面卡模式
在開發過程中,為了擴充套件乙個類的功能我們通常使用繼承乙個子類來實現。但是當擴充套件的功能過多時,則可能出現子類過多,類圖過於膨脹。所以我們使用裝飾者模式來避免這個問題。裝飾者模式提供了一種給乙個類新增職責的方法,它比使用繼承更加靈活,因為它能將職責加到類的指定例項中,它也允許定製乙個類,而無需在繼...