動態地給乙個物件新增一些額外的職責,就增加功能來說,裝飾模式比生成子類更加靈活。
盜圖(^_^)
component是定義了乙個物件介面,可以誒這些uixiang動態新增職責。concretecomponent是定義了乙個具體物件,也可以給這個物件新增一些職責,decorator,裝飾抽象類,繼承了component,從外類來擴充套件component類功能,component無需知道decorator的存在。
---------------component---------------------
public
abstract
class
component
---------------concretecomponent-------------
public
class
concretecomponent
extends
component
}---------------decrator-----------------------
abstract class decrator extends component
@override
public
void
operation()
}}---------------concretedecratora--------------
public
class
concretedecratora
extends
decrator
private
void
dereatea()
}---------------concretedecratorb--------------
public
class
concretedecratorb
extends
decrator
private
void
decorateb()
}---------------裝飾過程------------------------
concretecomponent component = new concretecomponent();
concretedecratora cona = new concretedecratora();
concretedecratorb conb = new concretedecratorb();
cona.setcomponent(component);
conb.setcomponent(cona);
conb.operation();
如果只有乙個concretecomponent類而沒有component類,那麼decorator類可以是concretecomponent的乙個子類。如果只有乙個concretedecorator,那麼沒有必要建立乙個單獨的decorator類,而可以把decorator和concretedecorator的責任合併成乙個類。 java 裝飾模式
裝飾模式 動態地給乙個物件新增一些額外的職責。就增加功能來說,decorator模式相比生成子類更為靈活 適用性 1.在不影響其他物件的情況下,以動態 透明的方式給單個物件新增職責。2.處理那些可以撤消 再不用使用的類或方法 的職責。3.當不能採用生成子類的方法進行擴充時。參與者 1.compone...
java與模式 裝飾模式
第四個設計模式 裝飾模式 裝飾模式是對物件功能增強時,平時使用繼承的一種替代方案 一 uml示意圖 二 組成部分 1.抽象構件 原始的功能介面 2.具體構件 具體的原始功能類 3.裝飾角色 持有具體構件類的物件,以便執行原有功能 4.具體裝飾 具體擴充套件的功能在這裡 三 例子 使用裝飾模式來演示乙...
Java 設計模式 裝飾模式
看了大話設計模式此章節多遍才稍微有點理解,特此記錄。深入淺出,通俗易懂。情景 小菜要去見未來女友 嬌嬌,來個服裝打扮的設計。第一彈 客戶端 public static void main string args 問題來了,嬌嬌喜歡超人,小菜這次想穿的是超人,咋辦?直接修改小菜的類嗎?這就違背了開閉原...