動態的將責任附加到物件上,想要擴充套件功能,裝飾者提供有別於繼承的另一種選擇
這種比繼承更加靈活機動的特性,也同時意味著更加多的複雜性。裝飾模式會導致設計中出現許多小類,如果過度使用,會使程式變得很複雜。
例:
package com.cn.gaoyan;
// 公共抽象介面
public
abstract
class beverage
public
abstract
double
cost();
}
package com.cn.gaoyan;
//被裝飾者例項
public
class
espresso
extends
beverage
@override
public
double
cost()
}
package com.cn.gaoyan;
//被裝飾者例項
public
class
houseblend
extends
beverage
@override
public
double
cost()
}
package com.cn.gaoyan;
//裝飾者
public
abstract
class
decoratorbeverage
extends
beverage
package com.cn.gaoyan;
//裝飾者例項
public
class
mocha
extends
decoratorbeverage
@override
public string getdescription()
@override
public
double
cost()
}
package com.cn.gaoyan;
//裝飾者例項
public
class
milk
extends
decoratorbeverage
@override
public string getdescription()
@override
public
double
cost()
}
package com.cn.gaoyan;
//main()
public
class maintest
}
Java設計模式 裝飾者模式
愉快的工作又開始了。leader安排了乙個新的任務,給乙個酸奶店的點單軟體增加新的功能。這個程式的原來所有的酸奶都繼承於乳酪類 cheese public abstract class cheese public abstract intprice 所有具體的酸奶繼承乳酪類並重寫 price方法,以...
Java設計模式 裝飾者模式
定義 裝飾模式指的是在不必改變原類檔案和使用繼承的情況下,動態地擴充套件乙個物件的功能。它是通過建立乙個包裝物件,也就是裝飾來包裹真實的物件。我們拿買蛋糕做乙個例子吧!場景 我們去甜品店買蛋糕,裡面有各種口味的蛋糕。當你想買乙個適合你口味的蛋糕,而店員卻告訴你想要蛋糕沒有。那怎麼辦呢?別灰心,店員會...
Java 裝飾者設計模式
1 首先定義乙個介面 public inte ce worker 2 定義乙個木匠類 public class carpenter implements worker 3 定義乙個水管工類 public class plumber implements worker 4 這兒是關鍵,定義乙個裝飾者類...