装饰者模式:(动态的将新功能附加到对象上。在对象功能扩展方面,它比继承更有弹性)

 其别名为包装器(Wrapper);装饰模式是一种对象结构模式。

设计原则:对扩展开放、对修改关闭,这句话体现在我如果想扩展被装饰者类的行为,无须修改装饰者抽象类;只需继承装饰者抽象类,实现额外的一些装饰或者叫行为即可对被装饰者进行包装。

所以:扩展体现在继承、修改体现在子类中,而不是具体的抽象类,这充分体现了依赖倒置原则。

 

举例:

咖啡馆订单项目:
1)、咖啡种类:Espresso、ShortBlack、LongBlack、Decaf
2)、调料:Milk、Soy、Chocolate
3)、扩展性好、改动方便、维护方便

23种设计模式之四(装饰者模式)

就如同调制一杯饮品:

  主体:黑咖啡、浓缩黑咖啡、无咖啡因咖啡、意式浓缩咖啡

  包装:牛奶、巧克力、豆浆

 

 超类(被装饰者):

 1 package com.java.jikexueyuan.coffeebar;
 2 
 3 public abstract class Drink {
 4     public String description="";
 5     private float price=0f;;
 6     
 7     
 8     public void setDescription(String description)
 9     {
10         this.description=description;
11     }
12     
13     public String getDescription()
14     {
15         return description+"-"+this.getPrice();
16     }
17     public float getPrice()
18     {
19         return price;
20     }
21     public void setPrice(float price)
22     {
23         this.price=price;
24     }
25     public abstract float cost();
26     
27 }
Drink

相关文章: