A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 覃宏海 中级黑马   /  2012-9-14 13:09  /  1139 人查看  /  2 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

装饰类和子类有什么不同吗?
装饰类和子类不都是对原来的类进行加强吗?

搞不清楚!

评分

参与人数 1黑马币 +30 收起 理由
王德升 + 30 赞一个!

查看全部评分

2 个回复

倒序浏览
装饰模式比继承要灵活,避免了继承体系臃肿,降低了类于类之间的关系。
装饰类因为增强已有对象,具备的功能和已有的是相同的,只不过提供了更强功能。
所以装饰类和被装饰类通常是都属于一个体系中的
回复 使用道具 举报
装饰和继承都能实现一样的特点:进行功能的扩展增强 ,有什么区别呢?   
    例如:
    有一个继承体系   
     Writer      
            ----TextWriter:用于操作文本     
            ----MediaWriter:用于操作媒体
    想要对操作的动作进行效率的提高,按照面向对象,可以通过继承对具体的功能进行扩展效率提高需要加入缓冲技术、  
     Writer   
           ----TextWriter:用于操作文本  
               ----BufferTextWriter 加入了缓冲技术的操作文本的对象  
           ----MediaWriter:用于操作媒体      
               ----BufferMediaWriter
     如果这个体系进行了功能扩展,有多了流对象那么这个流要提高效率,是不是也要产生子类?以此类推会导致继承体系越来越臃肿,不够灵活,既然加入的都是同一种技术缓冲, 前一种是让缓冲和具体的对象相结合不可可以将缓冲进行单独的封装,那个对象需要缓冲就将那个对象和缓冲关联 。
例如
     Writer   
          ----TextWriter:用于操作文本  
          -----MediaWriter:用于操作媒体
          ------bufferWriter:用于提高效率
    装饰比继承灵活 ,特点:装饰和被装饰类都必须所属同一个接口或者父类,
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马