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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© yan5108652 中级黑马   /  2013-7-7 14:55  /  1180 人查看  /  3 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 杨兴庭 于 2013-7-7 22:48 编辑

装饰类与继承的区别?什么时候用装饰类?什么时候用继承?

评分

参与人数 1黑马币 +1 收起 理由
杨兴庭 + 1

查看全部评分

3 个回复

倒序浏览
装饰模式比继承要灵活,避免了继承体系的臃肿。而且降低了类与类之间的关系。
装饰类因为增强已有对象,具备的功能和已有的是相同的,只不过提供了更强的功能。所以装饰类和被装饰类通常都是属于一个体系中的。
装饰类只需要写一个,谁需要增强就传入谁,
而继承是针对一个类来操作;

评分

参与人数 1黑马币 +2 收起 理由
杨兴庭 + 2

查看全部评分

回复 使用道具 举报
装饰模式是在不必改变原类文件和使用继承的情况下,动态的扩展一个对象的功能。它是通过创建一个包装对象,也就是装饰来包裹真实的对象。

装饰模式的特点;
(1) 装饰对象和真实对象有相同的接口。这样客户端对象就可以以和真实对象相同的方式和装饰对象交互。
(2) 装饰对象包含一个真实对象的索引(reference)
(3) 装饰对象接受所有的来自客户端的请求。它把这些请求转发给真实的对象。
(4) 装饰对象可以在转发这些请求以前或以后增加一些附加功能。这样就确保了在运行时,不用修改给定对象的结构就可以在外部增加附加的功能。在面向对象的设计中,通常是通过继承来实现对给定类的功能扩展。
饰模式和继承的不同
装饰模式                                                     继承
用来扩展特定对象的功能                               用来扩展一类对象的功能
不需要子类                                                 需要子类
动态地                                                       静态地
运行时分配职责                                           编译时分派职责
防止由于子类而导致的复杂和混乱                   导致很多子类产生,在一些场合,报漏类的层次
更多的灵活性                                              缺乏灵活性

评分

参与人数 1技术分 +1 收起 理由
杨兴庭 + 1

查看全部评分

回复 使用道具 举报
楼主您好,我已将您帖子的状态改成“已解决”,对此如有疑问可以通过QQ632763270和我取得联系

-------------------坚持学习,黑马因你而精彩---------------
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马