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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 韦振华 中级黑马   /  2013-3-27 09:59  /  1435 人查看  /  2 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 韦振华 于 2013-3-27 11:48 编辑

装修设计模式和继承有什么区别?对于像增加一个新功能我们完全可以继承一个类,然后复写其方法不就搞定了嘛,使用装修设计模式有啥好处?

评分

参与人数 1技术分 +1 收起 理由
贾文泽 + 1

查看全部评分

2 个回复

正序浏览
继承:前提是类与类之间必须存在关系,子类就具有了父类所有非私有的成员,且子类也具备了缓冲功能。这样的话继承体系就会很臃肿,并不利于扩展。
装饰:是为了对已有的功能进行增强,将该对象作为参数传递给装饰类的构造函数,并给予已有的功能来实现增强。
如果用继承,那么我们不需要用的功能在对象进行缓冲时,也会被缓冲。所以只需要被缓冲的对象作为参数传递给缓冲区,也就是功能的单独缓冲(方法体都是会在对象调用时存入方法区中)。
这样继承体系就变得很简单,优化了体系结构,同时也降低了类与类之间的关系。装饰比继承更灵活。
切记仅为了某个功能而去继承,有可能这两类根本就没关系。
比如IO中就存在装饰类,readLine就是将read装饰了,而不是通过复写来实现一行的读取。
其实毕老师在IO中讲解装饰时还是很详细的,可以多看看。
回复 使用道具 举报
装饰设计模式:当想要对自己的对象功能进行增强是,可以定义类将医用对象传入,基于已用功能,提供加强功能
装饰类增强已有对象的功能
如果继承,你每个类都需要继承,很臃肿,而且对象也会很多
这个装饰主要用在流里面

评分

参与人数 1技术分 +1 收起 理由
贾文泽 + 1

查看全部评分

回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马