初次學習,如有謬論請不吝斧正。
組合的威力是強大的,可以在執行時動態擴充套件而不改變原來的功能。
第四個設計原則:類應該對擴充套件開放,對修改關閉
應用這個原則通常會引入新的抽象層次,過多的引入會使**複雜度增加。
裝飾者模式:動態的將責任附加到物件身上
首先引入乙個抽象層次,針對抽象類程式設計
public
abstract
class
beverage
public
abstract
double
cost()
;}
裝飾者和被裝飾者都繼承這個抽象類,也就實現了「型別匹配」,依靠這個超類 裝飾者就能取代(包含)被裝飾者,
行為來自被裝飾者和組合它的裝飾者們,這樣 新增裝飾者元件就可以新增行為
被裝飾者
public
class
espress
extends
beverage
public
double
cost()
}
裝飾者抽象類(封裝變化,面向超型別程式設計)
public
abstract
class
condimentdecorator
extends
beverage
寫乙個具體的裝飾者元件
public
class
mocha
extends
condimentdecorator
public string getdescription()
public
double
cost()
}
測試**
方法的呼叫權先一步步委託到被裝飾者再不斷回溯。
public
class
starbuzz coffee
}
IO 裝飾設計模式
public class voice public voice int voice public int getvoice public void setvoice int voice public void say 擴音器 類與類之間的關係 1 依賴 形參 區域性變數 2 關聯 屬性 聚合 屬性整...
IO 裝飾設計模式
四部分組成 1 抽象元件 需裝飾的抽象物件 介面或抽象父類 2 具體元件 需要裝飾的物件 3 抽象裝飾類 包含了對抽象元件的引用以及裝飾著共有的方法 4 具體裝飾類 被裝飾的物件 示例 模擬咖啡 public class decorate02 1 抽象元件 inte ce drink 2 具體元件 ...
設計模式 裝飾者模式
public abstract class beverage public abstract double cost public abstract class condimentdecorator extends beverage public class darkroast extends be...