不仅能满足之前的功能需求,现在的新功能需求也可以满足, 同时也是一种特殊的代理模式
装饰器模式强调自身功能的增强,代理模式强调过程的控制,对原有对象功能的增强。
之前修建普通房子
public class NormalHouse{
public void build(){
System.out.println("修建围墙和房子");
}
}
现在要增加一个VIP房子,除了可以修建围墙和房子,还要修建游泳池
public interface NewHouse{
public void vipBuild();
}
通过实现新接口的适配器,支持对普通房子的修建
public class HouseAdapter implements NewHouse{
private NormalHouse normalHouse ;
public HouseAdapter (NormalHouse normalHouse ){
this.normalHouse = normalHouse ;
}
@Override
public String vipBuild() {
return normalHouse.build() + "修建泳池";
}
}
public class ZhuangShiTest {
public static void main(String[] args) {
NewHouse normalHouse = new HouseAdapter ( new NormalHouse() );
//在普通房子基础上进行包装,功能增强
normalHouse.build();
}
}