装饰器模式的要点
装饰器模式的重点不在于改变某个对象的特性或添加新的特性,而在于将新的公共特性抽取出来并适配多个对象,即装饰与被装饰对象之间是多对多的关系。
以java io体系为例。
java io中,装饰器是FilterInputStream,具体的装饰器有DataInputStream、BufferedInputStream等。被装饰类有FileInputStream、ByteArrayInputStream等。这些类的关系如下图所示:

其中,不管是DataInputStream亦或BufferedInputStream提供的新特性,都适用于FileInputStream或ByteArrayInputStream,因此采用装饰器模式实现io体系是比较合适的。
装饰器模式与代理模式的区别
代理模式强调的是被代理对象的功能控制或增强,这种控制和增强是只适用于某个对象的模式,即代理与被代理对象之间是一对一的关系。
网友评论