装饰设计模式:
字符流的缓冲区时为了提高效率而存在。缓冲区的出现提供了比以前流对象功能更强的函数。故、当对类的功能进行增强时,可称为对该类的装饰。
同时,装饰类的出现具备灵活性。
装饰和继承的区别:
装饰:装饰设计模式是一种解决某一类问题的思想,该类问题的有效解决方案。解决给该类提供增强功能的问题。
继承:是面向对象的特征之一。
继承会让体系变的臃肿,而装饰更为灵活。
装饰设计模式的出现可以对一组类进行功能的增强;而装饰类本身也是该体系的一个子类。
代码体现:通常情况下,装饰类一般不单独存在,都是通过构造函数接收被装饰的对象。基于被装饰的对象的功能,并对外提供增强型的功能。
在IO中有很多装饰设计模式的体现。如:BufferedReader、BufferedWriter
//实例:装饰ClassName 对象的类,称为装饰类,只为增强ClassName的功能而出现 class ClassName{ void method(){ //Code... } } class NewClassName{ private ClassName cn; NewClassName(ClassName cn){ this.cn=cn; } void newMethod(){ cn.method(); //Code... } }