一、UML类图
二、代码示例
public class Client {
public static void main(String[] args) {
Component component = new ConcreteComponent();
component = new ConcreteDecorator(component);
component.operation();
}
}
public interface Component {
void operation();
}
public class ConcreteComponent implements Component{
public void operation() { }
}
public abstract class Decorator implements Component{
protected Component component = null;
public Decorator(Component component) {
this.component = component;
}
}
public class ConcreteDecorator extends Decorator{
public ConcreteDecorator(Component component) {
super(component);
}
@Override
public void operation() {
component.operation();
}
}
三、角色介绍
- Client(客户端):
客户端角色,程序的调用者。 - Component(被装饰物):
定义了抽象接口的被装饰物。 - ConcreteComponent(具体的被装饰物):
实现了 Component角色所定义的接口的具体被装饰物。 - Decorator(装饰物):
该角色具有与Component角色相同的接口,并在内部保存Component角色。 - ConcreteDecorator(具体的装饰物):
具体的装饰物角色。