意圖
動態地給乙個物件新增一些額外的職責。就增加功能來說,decorator模式相比生成子類更為靈活。
適用性1.在不影響其他物件的情況下,以動態、透明的方式給單個物件新增職責。
2.處理那些可以撤消的職責。
3.當不能採用生成子類的方法進行擴充時。一種情況是,可能有大量獨立的擴充套件,為支援每一種組合將產生大量的子類,使得子類數目呈**性增長。另一種情況可能是因為類定義被隱藏,或類定義不能用於生成子類。
結構圖
code
1//decorator23
/*notes:
4* dynamically wrap functionality with additonal functionality, so that
5* the client does not know the difference. 6*/
78namespace decorator_designpattern
9 16
17class concretecomponent : component
18
2425
public
override
void draw()
26
", strname);
28 }
29 }
3031
abstract
class decorator : component
32
39public
override
void draw()
40
44 }
4546
class concretedecorator : decorator
47
55public
override
void draw()
56
60void customdecoration()
61
", strdecoratorname);
64 }
65 }
6667
68///
69///
summary description for client.
70///
71public
class client
72
8384
public
static
int main(string args)
85
96 }
97 }
設計模式 裝飾者模式
public abstract class beverage public abstract double cost public abstract class condimentdecorator extends beverage public class darkroast extends be...
設計模式 裝飾者模式
沒什麼特別的,之前看懂了,這次自己再複述一下。畢竟把別人講懂了才是真的懂了。主要參考了head first 設計模式。例子講述的是在為星巴克咖啡的製作訂單的情況,比如客人點了飲料,那麼系統會自動算出 不知道是我沒有體會到,還是這個例子不太合適,算出 那麼簡單的事還需要用到類?不過不影響我們思考裝飾者...
設計模式 裝飾者模式
好幾天沒出部落格了,在學習android的一些新控制項的時候,用到了乙個模式,叫裝飾者模式,所以在此講講這個模式。模式,包含以下四個角色 1 抽象構件 component 角色 給出乙個抽象介面,以規範準備接收附加責任的物件。2 具體構件 concretecomponent 角色 定義乙個將要接收附...