原理
装饰器模式(Decorator)的角色:
- 抽象组件(Component) :声明装饰器和被装饰组件的接口标准
- 具体组件(ConcreteComponent):实现抽象组件,完成抽象组件的基本功能
- 装饰器(Decorator):也是抽象组件的子类,持有抽象组件的引用,调用抽象组件的实现
- 具体装饰器(ConcreteDecorator)
UML类图
代码示例
/**
* 抽象组件
*/
public abstract class Component {
/**
* 抽象方法
*/
public abstract void operation();
}
/**
* 具体组件
*/
public class ConcreteComponent extends Component {
@Override
public void operation() {
/*
实现基础能力
*/
System.out.println("ConcreteComponent operation");
}
}
/**
* 装饰器
*/
public class Decorator extends Component {
private Component component;
public Decorator(Component component) {
this.component = component;
}
@Override
public void operation() {
//调用基础能力方法
component.operation();
}
}
/**
* 具体装饰器
*/
public class ConcreteDecorator extends Decorator {
public ConcreteDecorator(Component component) {
super(component);
}
@Override
public void operation() {
super.operation();
additionalOperation();
}
/**
* 新增逻辑
*/
public void additionalOperation() {
System.out.println("additional operation");
}
}