具体模式实现参考head first
只是说明几点,助于理解
首先,具体实现类与装饰器接口继承自同一个component,达到类型匹配的目的。这样做(继承)的目的:这样对于client来说,装饰模式以对客户透明的方式动态地给对象增加更多的责任。也就是说,客户端并不知道对象在装饰前和装饰后又什么区别。
如果component是一个抽象的接口,对于具体实现类与decorator,他们实现相同的接口函数的时候,以组合进去的对象调用(a.method())的方式,区别不同具体实现类的方法。
其次,decorator是一个抽象的接口,它可以组合一个component,也就是说,可以不断进行层层装饰。