類圖如下:
// 已存在的、具有特殊功能、但不符合我們既有的標準介面的類
class adaptee
}
// 目標介面,或稱為標準介面
inte***ce
target
// 具體目標類,只提供普通功能
class
concretetarget
implements
target
}
// 介面卡類,繼承了被適配類,同時實現標準介面
class
adapter
extends
adaptee
implements
target
}
// 測試類
public
class client
}
// 介面卡類,直接關聯被適配類,同時實現標準介面
class
adapter
implements
target
public
void request()
}
// 測試類
public
class client
}
裝飾者模式就是動態的將責任附加到物件上, 若要擴充套件功能, 裝飾者提供了比繼承更優彈性的解決方案。
先來看一些怎麼用**來描述裝飾者。
類圖:
假設我要買一杯飲料, 我可以選擇加各種調料, 每種調料都有不一樣的價錢, 我可以加多種調料。每次加調料我都可以動態的計算**。
飲料抽象類:
public
abstract
class beverage
public
abstract
double
cost();
}
裝飾者抽象類:
public
abstract
class
condimentdecorator
extends
beverage
具體飲料espresso:
public
class
espresso
extends
beverage
@override
public
double
cost()
}
我要加mocha調料:
public
class
mocha
extends
condimentdecorator
@override
public string getdescription()
@override
public
double
cost()
}
計算**:
介面卡模式和裝飾器模式
概念 將乙個類的介面轉換成客戶希望的另外乙個介面。adapter模式使得原本由於介面不相容而不能一起工作的那些類可以一起工作。特點 主要應用於希望復用一些現存的類,但是介面又與復用環境要求不一致的情況。分類 類介面卡模式 物件的介面卡模式 介面的介面卡模式 差別較大 實現思想 target 使用者期...
設計模式 介面卡模式(類介面卡和物件介面卡)
如果去歐洲國家去旅遊的話,他們的插座如下圖最左邊,是歐洲標準。而我們使用的插頭如下圖最右邊的。因此我們的膝上型電腦,手機在當地不能直接充電。所以就需要乙個插座轉換器,轉換器第1面插入當地的插座,第2麵供我們充電,這樣使得我們的插頭在當地能使用。生活中這樣的例子很多,手機充電器 將220v轉換為5v的...
包裝模式(介面卡模式和裝飾者模式)
先看乙個圖 mybatis中的cache 通過對 cache的實現進行了進一步包裝,就可以實現多種多樣的功能,如lru,fifo等快取淘汰策略 點選 synchronizedcache 可以看到,這個是給 方法加上了 synchronized 不同的包裝類,實現了對應特定業務的功能 優點 能提高類的...