黑马程序员技术交流社区

标题: 关于装饰设计模式的问题 [打印本页]

作者: 覃宏海    时间: 2012-9-14 13:09
标题: 关于装饰设计模式的问题
装饰类和子类有什么不同吗?
装饰类和子类不都是对原来的类进行加强吗?

搞不清楚!
作者: 李菁    时间: 2012-9-14 13:20
装饰模式比继承要灵活,避免了继承体系臃肿,降低了类于类之间的关系。
装饰类因为增强已有对象,具备的功能和已有的是相同的,只不过提供了更强功能。
所以装饰类和被装饰类通常是都属于一个体系中的

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





欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2