設計模式(Design Pattern) – Decorator (裝飾者模式)

目的

將額外權責動態附加於物件身上,不必衍生子類別即可彈性擴充。如為 TextBox 添加 ScrollBar

動機

如果想將額外權責附加到個別物件上面,可以使用繼承,但這作法彈性不夠。

Decorator 的作法是在元件外面包覆上有該能力的物件。這做法的另一個優點就是通透性,所以就像裝備一樣,可以無限的包覆下去。

結構

參與者

  • Component : 可以被 Decorator 動態添加權責的物件之介面
  • ConcreteComponent : 可以被 Decorator 動態添加權責的物件
  • Decorator : 裝飾者介面
  • ConcreteDecoreator : 可將權責添加到 Component 身上

範例 

建立 Component ,提供共用的基本數值

建立可以被共用的基本角色數值

可以被添加的裝飾者

實際產生怪物

print

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *