装饰器,顾名思义就是给现有对象增加额外的功能起到“装饰”该对象的功能。装饰器设计模式可以快速扩展一个对象的功能。装饰器模式类图实现如下:
Componen:其中Componen为抽象组件,定义基本抽象行为。
ConcereteComponen:为具体需要修饰的对象。
Decorator:为装饰者,装饰者跟被装饰者需要实现同一个抽象组件。
ConcreteDecorator:具体装饰者,其通过持有被装饰者的引用来实现对被装饰者的修饰。
典型实现JDK中IO:
其中InputStream是一个抽象组件,FileInputStream是具体被装饰对象,FilterInputStream是装饰对象,BufferedInputStream是具体装饰对象,经常我们会使用如下方式来读取文件,BufferedInputStream使得读取文件具有了缓存功能。
File file = new File("hello.txt"); FileInputStream in = new FileInputStream(file); BufferedInputStream inBuffered = new BufferedInputStream(in);