**例項參考於《headfirst設計模式》。
public
abstract
class
beverage
// cost必須在子類中實現
public
abstract
double
cost()
;}
public
abstract
class
condimentdecorator
extends
beverage
// 濃縮咖啡
public
class
espresso
extends
beverage
@override
public
double
cost()
}// 綜合咖啡
public
class
houseblend
extends
beverage
@override
public
double
cost()
}// 深焙
public
class
darkroast
extends
beverage
@override
public
double
cost()
}
// 摩卡
public
class
mocha
extends
condimentdecorator
@override
public string getdescription()
@override
public
double
cost()
}// 豆漿
public
class
soyextends
condimentdecorator
@override
public string getdescription()
@override
public
double
cost()
}// 奶泡
public
class
whip
extends
condimentdecorator
@override
public string getdescription()
@override
public
double
cost()
}
public
class
starbuzzcoffee
}
我們這邊是利用繼承達到「型別」匹配的目的,而不是利用繼承獲得行為。
行為來自裝飾者和基礎元件,或與其他裝飾者之間的組合關係。
裝飾者該做的事,就是增加行為到被包裝的物件上。
繼承鏈如下圖:
簡單的裝飾者模式
裝飾者模式主要用來擴充套件功能的,不會改變原來物件的功能,只做擴充套件 版本一 如下 public abstract class beefnoodlepublic class basebeefnoodle extends beefnoodle public int getprice public c...
裝飾者模式簡單理解
裝飾者模式簡單理解 1.定義 增強乙個類的功能,還可以讓裝飾者類之間互相裝飾 2.步驟 1 裝飾者類中需要維護乙個被裝飾者類的引用 2 讓裝飾者類有乙個共同的父類,或者父介面 eq 例項 裝飾者類與繼承的區別 繼承實現的增強類 優點 結構清晰,而且實現簡單 缺點 對於每乙個的需要增強的類都要建立具體...
裝飾者模式應用示例 表單驗證
在乙個 web 專案中,可能存在非常多的表單,如註冊 登入 修改使用者資訊等。在表單資料提交給後台之前,常常要做一些校驗,比如登入的時候需要驗證使用者名稱和密碼是否為空,如下 表單驗證title name viewport content width device width,initial sca...