黑马程序员技术交流社区

标题: 关于装饰设计模式和继承的使用问题。 [打印本页]

作者: AtheerCHA    时间: 2015-1-9 19:51
标题: 关于装饰设计模式和继承的使用问题。
问一下在什么情况下使用装饰设计模式,什么情况使用继承。感觉要是使用了装饰设计模式,继承不是可以废掉了。
作者: 潘耿威    时间: 2015-1-9 21:42
当想要对已有的对象进行功能增强时,
可以定义类,将已有对象传入,基于已有的功能,并提供加强功能。
那么自定义的该类称为装饰类。

装饰类通常会通过构造方法接收被装饰的对象。
并基于被装饰的对象的功能,提供更强的功能。





如一个简单的demo 人吃饭,刚开始人穷只是普通的吃饭后来人生活好了吃饭就不一样了增强了吃饭的功能

装饰是构造函数参数传递进行增强

如果为了某个功能而产生子类(继承)那么那个体系是非常臃肿的



例如:你有个对象有个功能 是在N年前建立的,如今你觉得功能不够用了 写个类把对象传进来就可以解决问题了 如果这个功能写错了 我就把自己写的功能去掉又不影响以前的功能灵活性相当强的。



装饰模式比继承要灵活。避免了继承体系臃肿。
而且降低了类于类之间的关系。

装饰类因为增强已有对象,具备的功能和已有的是相同的,只不过提供了更强功能。
所以装饰类和被装饰类通常是都属于一个体系中的。


作者: AtheerCHA    时间: 2015-1-11 18:17
潘耿威 发表于 2015-1-9 21:42
当想要对已有的对象进行功能增强时,
可以定义类,将已有对象传入,基于已有的功能,并提供加强功能。
那么 ...

哥,还有一点发你没提到,那就是装饰类也可以继承增强类的的父类。




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