装饰器模式
装饰器模式介绍
定义
指在不改变现有对象结构的情况下,动态地给该对象增加一些职责(即增加其额外功能)的模式,它属于对象结构型模式。
优点
- 不改变原有对象,扩展对象功能
- 使用不同的组合可以实现不同效果
- 符合开闭原则
应用场景
- 扩展一个类的功能或给一个类添加附加职责
经典案例
- Servlet
装饰器模式结构与实现
具体的装饰器角色可以相互嵌套!!一层层装饰!!
结构
抽象构件(Component)角色:定义一个抽象接口以规范准备接收附加责任的对象。
具体构件(ConcreteComponent)角色:实现抽象构件,通过装饰角色为其添加一些职责。
抽象装饰(Decorator)角色:继承抽象构件,并包含具体构件的实例,可以通过其子类扩展具体构件的功能。
具体装饰(ConcreteDecorator)角色:实现抽象装饰的相关方法,并给具体构件对象添加附加的责任。
实现模板
/**
* 抽象构件角色
*/
interface Component {
void operation();
}
/**
* 具体构件角色
*/
class ConcreteComponent implements Component {
@Override
public void operation() {
System.out.println("调用具体构件角色的方法");
}
}
/**
* 抽象装饰角色
* 将抽象构建角色组合
*/
class Decorator implements Component {
private Component component;
public Decorator(Component component) {
this.component = component;
}
@Override
public void operation() {
component.operation();
}
}
/**
* 具体装饰角色
*/
class ConcreteDecorator extends Decorator {