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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 张志阳 中级黑马   /  2012-5-6 15:30  /  2204 人查看  /  5 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

装饰与继承有什么具体的区别?我感觉都差不多呢

5 个回复

倒序浏览
装修模式比继承灵活,避免了继承的臃肿, 装饰类因为增强已有对象,具备的功能和已有的功能的相同的,只不过提供更强的功能,所有装饰类和被继承的类通常都是属于同一体系中的。
回复 使用道具 举报
一个类只能继承一个父类,继承是为了增强父类的功能,子类重写父类中方法。装饰是通过某种方法将被装饰的类的对象传入进该类,通常是在构造方法中传入。而对于一个给定的对象,可能有不同的装饰对象,客户可以根据自己的需求来增加装饰类型,更加灵活。
回复 使用道具 举报
和继承的区别:
继承会让体系变得臃肿,
装饰更为灵活。
回复 使用道具 举报
当想要对已有的对象进行功能增强时,可定义类,将已有对象传入,基于已有的功能,并加强功能。(通过构造函数接收对象)将底了类与类之间的关系。
通过继承也可以增强功能,但会非常臃肿。
例如:毕老师的例子
通过继承实现的
MyReader
             |--MyTextReader
                   |--MyBufferTextReader
             |--MyMediaReader
                   |--MyBufferMediaReader
         |--MyDataReader
                   |--MyBufferDataReader
通过装饰实现的
MyReader
             |--MyTextReader
             |--MyMediaReader
             |--MyDataReader
             |--MyBufferReader
回复 使用道具 举报
装饰设计模式:
当想要对已有的对象进行功能增强时,可以定义类将已有的对象传入,基于已有的功能进行增强并提供出去,那么自定义的类称为装饰类。装饰类通常会通过构造方法接收被装饰的对象,并基于被装饰的对象的功能提供更强的功能。
装饰与继承的区别:
装饰模式比继承灵活,避免了继承体系的臃肿,而且降低了类于类之间的关系。
装饰类因为增强的功能和已有对象具备的功能是相同的,只不过提供了更强的功能,所以装饰类和被装饰类通常都是属于一个体系。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马