黑马程序员技术交流社区

标题: 装饰模式与继承有什么区别?不解,求教. [打印本页]

作者: 刘松老师    时间: 2013-3-31 09:02
标题: 装饰模式与继承有什么区别?不解,求教.
装饰模式与继承有什么区别?不解,求教.
作者: 刘胜寒    时间: 2013-3-31 09:12
装饰模式使用原来的功能,实现更强的功能,如IO流中的的read(),每次读取一个字符,使用装饰模式后,变成readline();可以可以读一行了...功能变强大了....对不对...继承就不说了...你应该懂
作者: wahaha    时间: 2013-3-31 09:36
举个例子说明哈~~可能不太恰当
1.装饰模式:你买个手机壳包在IPhone4上,组成一个拥有新外形的手机,但是打电话发短信什么的功能都是调用Iphone4的,只是对外观这个方法show()进行了装饰,外壳今天可以包Iphon4,明天也可以拿去包Iphone3,这就是装饰设计,可以对某一类对象进行装饰

2.继承:今天你用Iphone4,明天Iphone5出来了,但是是在Iphone4的基础上改进的,拥有Iphone4的所有功能,但是更强大了,就是说复写了父类的方法.

这么说...希望能帮到你..哈哈,大清早起来刚想的例子..可能不太恰当
作者: 王_强    时间: 2013-3-31 09:58
* 装饰设计模式:
* 当想要对已有的对象进行功能增强时,
* 可以定义类,将已有的对象传入,基于已有的功能,并提供加强的功能
* 那么自定义的类就是装饰类。
*
* 通常Superperson和person同时实现同一个接口或同一个类
*
* 装饰类通常会通过构造方法接收被装饰的对象
* 并基于被装饰的对象的功能提供更强的功能。
*
* 装饰类因为增强已有对象,具备的功能和已有的是相同的,只不过是
* 提供了更强的功能,所以装饰类和被装饰类通常都是属于一个体系中的
*
* */

楼主,这是毕老师上课讲解的笔记,希望能帮到你!
作者: 黑马吕世成    时间: 2013-3-31 15:13
装饰类的作用我想不必说了,楼上都说的很清楚。
关于什么时候用到装饰类,什么时候用到继承,这里我只是表达一下自己的意见:
装饰的出现时出于增强现有类的功能的但是两者之间并无联系,我们需要增强功能的时候用一下,就像一个工具。而继承的出现则是为了体现两个类之间的那种紧密联系的关系的,就像父子关系。




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