decorator - 对象结构模式
1.意图
动态的给一个对象添加一些职责,decorator模式比生成子类更灵活
2.参与者
Compoment - 定义一个对象接口,可以给这些对象动态的添加职责
ConcreteCompoment - 定义一个对象,可以给这个对象动态地添加职责
Decorator - 维持一个指向component对象的指针,并定义一个与component
接口一致的接口。
ConcreteDecorator - 向组件添加职责。
3.结构
代码:
public interface Compoment {
void operation();
}
public class ConcreteCompoment implements Compoment {
@Override
public void operation() {
System.out.println("ConcreteCompoment operation");
}
}
public class Decorator implements Compoment {
Compoment compoment = null;
Decorator(Compoment compoment){
this.compoment = compoment;
}
@Override
public void operation() {
compoment.operation();
}
}
public class ConcreteDecoratorA extends Decorator {
ConcreteDecoratorA(Compoment compoment) {
super(compoment);
}
@Override
public void operation() {
super.operation();
addBehavior();
}
private void addBehavior(){
System.out.println("ConcreteDecoratorA addBehavior");
}
}
public class ConcreteDecoratorB extends Decorator {
ConcreteDecoratorB(Compoment compoment) {
super(compoment);
}
}
public class Client {
public static void main(String[] args) {
ConcreteDecoratorA A = new ConcreteDecoratorA(new ConcreteCompoment());
A.operation();
}
}