一 装饰者模式
装饰者模式:动态的将责任附加到对象身上。若要扩展,装饰者模式比继承更加有弹性。
装饰者模式秉承这一个开放,关闭原则。就是对扩展开放,对修改关闭,也就是说对该类可以做扩展,但是不可以修改该类的原始功能。
二 装饰者模式的示例
这里我们列举一个奶茶店的例子。起初,这个奶茶店只卖普通茶。代码示例如下:
先定义一个材料的接口:
public abstract class Material {
String desc;
public String getDesc(){
return desc;
}
public abstract float cost();
}
再定义一个普通的茶:
public class Tea extends Material{
public Tea(){
this.desc = "普通的茶";
}
@Override
public float cost() {
// TODO Auto-generated method stub
return 5.0f;
}
}
如果有顾客来买茶的话,那么只需要new 一个Tea对象即可,后来奶茶店扩张了,种类多样了,开始卖奶茶了,还有珍珠奶茶等多种茶,那么这个时候,我们是否需要去创建奶茶以及珍珠奶茶等多个对象呢?如果按照这个思路创建下去的话,那么将来有一百种奶茶,那么势必得创建一百个java类然后继承Material,如此下来,到时候种类继续扩展,多