簡單介紹裝飾者模式
阿新 • • 發佈:2018-12-05
裝飾者模式(Decorator Pattern,有的也用 Wrapper Pattern)就是動態地把職責附加到已有物件上去,實現功能擴充套件。這種特性,使得
裝飾者模式提供了比繼承更具有彈性的解決方案。
例項場景 : 給中國美國(或者其它國家)的女孩加上外表的屬性(如長髮,身高等),
UML圖:
步驟:
1 建立一個女孩girl
1 /** 2 * @Author : zhuhuicong 3 * 2018/12/2 22:57 4 * @Version 1.0 5 * 抽象Girl 6 */ 7 public abstract class Girl { 8 String description = "no particular"; 9 10 public String getDescription() { 11 return description; 12 } 13 }View Code
2 建立一個具有特性的女孩(這裡以美國女孩為例),繼承頂級類girl
1 /** 2 * @Author : zhuhuicong 3 * 2018/12/2 23:00 4 * @Version 1.0 5 * 美國女孩 6 */ 7 public class AmericanGirl extends Girl { 8 public AmericanGirl() { 9 description = "+AmericanGirl"; 10 } 11 }View Code
3 建立一個裝飾者的抽象類,根據UML圖可知,繼承girl類
1 /** 2 * @Author : zhuhuicongView Code3 * 2018/12/2 23:03 4 * @Version 1.0 5 * 裝飾者 6 */ 7 public abstract class GirlDecorator extends Girl { 8 public abstract String getDescription(); 9 }
4根據自己的需求進行裝飾(這裡僅僅以金髮,身高為例)
1 /** 2 * @Author : zhuhuicong 3 * 2018/12/2 23:05 4 * @Version 1.0 5 * 裝飾頭髮 6 */ 7 public class GoldHandler extends GirlDecorator { 8 private Girl girl; 9 10 public GoldHandler(Girl g) { 11 girl = g; 12 } 13 14 @Override 15 public String getDescription() { 16 return girl.getDescription() + " with golden hair"; 17 } 18 }View Code
1 public class Tall extends GirlDecorator { 2 private Girl girl; 3 4 public Tall(Girl g) { 5 girl = g; 6 } 7 8 @Override 9