1. 程式人生 > >簡單介紹裝飾者模式

簡單介紹裝飾者模式

裝飾者模式(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 : zhuhuicong
3 * 2018/12/2 23:03 4 * @Version 1.0 5 * 裝飾者 6 */ 7 public abstract class GirlDecorator extends Girl { 8 public abstract String getDescription(); 9 }
View Code

  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