黑马程序员技术交流社区

标题: 装饰设计模式 [打印本页]

作者: flying    时间: 2014-2-19 01:00
标题: 装饰设计模式
毕老师讲装饰设计模式说BufferedReader就是一个装饰类 为什么不直接在将BufferedReader的方法放在Reader里面呢,让子类继承  ,继承和装饰设计模式是什么区别?

作者: 唐宋元明清    时间: 2014-2-19 01:37
BufferedReader的里面有它特有的方法,而Reader里面是所有字节输出流的共性方法(注意这个共性内容是提取出来的)。继承跟装饰大体上是差不多的,不过继承显得很关系很杂乱,很臃肿。装饰类就轻便多了有很好的扩展性。
作者: 榨菜    时间: 2014-2-19 03:24
装饰 就是对一个类进行功能增强,  比如有个类想添加一个函数功能,如果用继承的话,虽然是可以,但是不符合继承的规则,继承是把所有的共性抽取出来。  而装饰就是 在原有的类的基础上添加一个功能。然后装饰类重写传进来类的所有方法,方法里面就直接调用穿进去类的方法即可。
作者: 75100313    时间: 2014-2-19 07:56
本帖最后由 75100313 于 2014-2-19 08:13 编辑

黑马程序员_毕向东_Java基础视频教程第19天-07-IO流(装饰和继承的区别).zip
父类:读取


子类:文本读取   媒体文件读取  数据读取   

现在三个都需要缓冲区Buffer读取

继承虽然能用  但是缓冲技术都是一样的 ,最好把相同的功能提炼出来

这样在设计类的时候 就把父类当作参数构造进去  哪个子类需要增强 就把子类传进去(这里是多态的实现) 更好!

装饰模式 更灵活  扩展性更好!

作者: .......    时间: 2014-2-19 10:19
装饰设计模式比继承要好很多。 毕老师说 继承的体系会变的很臃肿。 装饰则好很多
作者: 山治0712    时间: 2014-2-19 21:07
还有单继承的原因
作者: 白_蓝(八公)    时间: 2014-2-20 08:33
装饰是对类的进一步增强!使功能更完善或者达到我们需要的结果!这样的好处是以后我们需要扩展的时候可以自己弄~如果每次你调用方法都要继承会显得程序相对臃肿!而且继承和装饰还是有区别!继承是把所有子类的共性功能总结起来变成父类~而装饰是增加功能增加扩展性!希望对你有帮助哈




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