可以动态添加对象功能,-----合成/聚合复用原则,松耦合。不宜使用继承,紧耦合。
利用上述思想,重分利用对象的合成,一层层委托具体实现。

被装饰者和装饰者都实现同样的接口,在装饰者的构造方法中传入一个被装饰者的实例,在装饰者的方法中调用被装饰者的方法,自己做一些额外的工作
装饰者同样也可以被别的装饰者来装饰,这样层层嵌套

被装饰的要传给装饰者的构造方法,从外往里调用接口所指定的方法。
最经典的例子:java的InputStream和OutputStream家族

使用的例子:
阅读(910) | 评论(0) | 转发(0) |