欢迎来到天天文库
浏览记录
ID:34027687
大小:100.21 KB
页数:4页
时间:2019-03-03
《黑马程序员java教程:装饰设计模式》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、装饰设计模式 对原有类进行了功能的改变,增强。 示例:1.classPerson{2. voidchifan(){3. System.out.println("吃饭");4. }5.}6.7.//采用装饰的方式增强Person类8.//这个类的出现是为了增强Person而出现的9.classNewPerson{10. privatePersonp;11.12. NewPerson(Personp){13. this.p=p;14. }15.16. publicvoidchifan()
2、{17. System.out.println("开胃酒");18. p.chifan();19. System.out.println("甜点");20. }21.}22.23.//采用继承的方式增强Person类24.classNewPerson2extendsPerson{25. publicvoidchifan(){26. System.out.println("开胃酒");27. super.chifan();28. System.out.pri
3、ntln("甜点");29. }30.}31.1.publicclassPersonDemo{2. publicstaticvoidmain(String[]args){3. Personp=newPerson();4. NewPersonnp1=newNewPerson(p);5. np1.chifan();6.7. System.out.println("---------------");8.9. NewPerson2np2=newNewPerson2();10.
4、 np2.chifan();11. }12.}13.复制代码 运行结果: 装饰和继承都能实现一样的特点:进行功能的扩展增强。有什么区别呢? 首先有一个继承体系: Writer
5、--TextWriter:用于操作文本
6、--MediaWriter:用于操作媒体 如果想要对操作的动作进行效率的提高,按照面向对象,可以通过继承的方式对具体的对象进行功能的扩展,那么就需要加入缓冲技术。 Writer
7、--TextWriter:用于操作文本
8、--BufferTextWrite
9、r:加入了缓冲技术的操作文本的对象
10、--MediaWriter:用于操作媒体
11、--BufferMediaWriter:加入了缓冲技术的操作媒体的对象 以上方式并不理想,如果这个体系需要再进行功能扩展,又多了更多流对象。 这样就会发现只为提高功能,导致继承体系越来越臃肿,不够灵活。 重新思考问题: 既然加入的都是同一种技术--缓冲。 前一种是让缓冲和自己的流对象相结合。 可不可以将缓冲进行单独的封装,哪个对象需要缓冲就将哪个对象和缓冲关联。1.classBuffer{2. Buffer(TextWri
12、terw){}3. Buffer(MediaWriterw){}4.}复制代码 简化为:1.1.classBufferedWriterextendsWriter{2. BufferedWriter(Writerw){}3.}复制代码 Writer
13、--TextWriter:用于操作文本
14、--MediaWriter:用于操作媒体
15、--BufferedWriter:用于提高效率 可见:装饰比继承灵活。 特点:装饰类和被装饰类都必须所属同一个接口或者父类。
此文档下载收益归作者所有