代码实现如下,注意几点: 1.Decorator中的Operation()方法是对被修饰对象ConcreteComponent中方法Operation()的封装 2.ConcreteDecorator中的Operation()方法是对其父类Operation()方法的封装,同时加入一些额外的新方法 3.ConcreteDecorator中的构造函数负责将修饰与被修饰对象链接在一起,如下图:
装饰者与被装饰者具有相同的接口,从而动态增加的功能不会破坏已有的接口,即修有一个对象后,其接口不发生变化 透明且动态的方式增加单个对象的功能 所谓透明,即用户仍可以直接访问被修饰者 另外一种增加功能的方法是继承 使用时保持被修饰者的功能单一,从而进行修饰的时候,可以组合出更多的功能,结构灵活——即被修饰者“原子化”