动态地给一个对象添加一些额外的职责,就增加功能来说,装饰模式比生成子类更为灵活
abstract class Decorator implements Component{ protected Component component; public void setComponent(Component component){ this.component=component; } @Override public void Operation(){ if(component != null){ component.Operation(); } } }
装饰模式是利用setComponent来对对象进行包装的。这样每个装饰对象的实现就和如何使用这个对象分离开了