装饰和继承都能实现一样的特点:进行功能的扩展增强 ,有什么区别呢?
例如:
有一个继承体系
Writer
----TextWriter:用于操作文本
----MediaWriter:用于操作媒体
想要对操作的动作进行效率的提高,按照面向对象,可以通过继承对具体的功能进行扩展效率提高需要加入缓冲技术、
Writer
----TextWriter:用于操作文本
----BufferTextWriter 加入了缓冲技术的操作文本的对象
----MediaWriter:用于操作媒体
----BufferMediaWriter
如果这个体系进行了功能扩展,有多了流对象那么这个流要提高效率,是不是也要产生子类?以此类推会导致继承体系越来越臃肿,不够灵活,既然加入的都是同一种技术缓冲, 前一种是让缓冲和具体的对象相结合不可可以将缓冲进行单独的封装,那个对象需要缓冲就将那个对象和缓冲关联 。
例如
Writer
----TextWriter:用于操作文本
-----MediaWriter:用于操作媒体
------bufferWriter:用于提高效率
装饰比继承灵活 ,特点:装饰和被装饰类都必须所属同一个接口或者父类,
|