黑马程序员技术交流社区

标题: 装饰与继承的区别 [打印本页]

作者: 张志阳    时间: 2012-5-6 15:30
标题: 装饰与继承的区别
装饰与继承有什么具体的区别?我感觉都差不多呢
作者: 李震 李震 李震    时间: 2012-5-6 16:15
装修模式比继承灵活,避免了继承的臃肿, 装饰类因为增强已有对象,具备的功能和已有的功能的相同的,只不过提供更强的功能,所有装饰类和被继承的类通常都是属于同一体系中的。
作者: 田林    时间: 2012-5-6 17:45
一个类只能继承一个父类,继承是为了增强父类的功能,子类重写父类中方法。装饰是通过某种方法将被装饰的类的对象传入进该类,通常是在构造方法中传入。而对于一个给定的对象,可能有不同的装饰对象,客户可以根据自己的需求来增加装饰类型,更加灵活。
作者: 谭景宾    时间: 2012-5-6 17:50
和继承的区别:
继承会让体系变得臃肿,
装饰更为灵活。
作者: 黑马张立国    时间: 2012-5-6 18:06
当想要对已有的对象进行功能增强时,可定义类,将已有对象传入,基于已有的功能,并加强功能。(通过构造函数接收对象)将底了类与类之间的关系。
通过继承也可以增强功能,但会非常臃肿。
例如:毕老师的例子
通过继承实现的
MyReader
             |--MyTextReader
                   |--MyBufferTextReader
             |--MyMediaReader
                   |--MyBufferMediaReader
         |--MyDataReader
                   |--MyBufferDataReader
通过装饰实现的
MyReader
             |--MyTextReader
             |--MyMediaReader
             |--MyDataReader
             |--MyBufferReader
作者: 周素强    时间: 2012-5-6 18:25
装饰设计模式:
当想要对已有的对象进行功能增强时,可以定义类将已有的对象传入,基于已有的功能进行增强并提供出去,那么自定义的类称为装饰类。装饰类通常会通过构造方法接收被装饰的对象,并基于被装饰的对象的功能提供更强的功能。
装饰与继承的区别:
装饰模式比继承灵活,避免了继承体系的臃肿,而且降低了类于类之间的关系。
装饰类因为增强的功能和已有对象具备的功能是相同的,只不过提供了更强的功能,所以装饰类和被装饰类通常都是属于一个体系。




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