装饰模式:在不必改变原类文件和使用继承的情况下,动态地扩展一个对象的功能。
public class Decorator implements Component {
private Component component;
public Decorator(Component component) {
this.component = component;
}
@Override
public void operate() {
component.operate();
}
}
class ConcreteDecoratorA extends Decorator {
public ConcreteDecoratorA(Component component) {
super(component);
}
@Override
public void operate() {
super.operate();
addOperation();
}
public void addOperation() {
System.out.println("ConcreteDecoratorA");
}
}
class ConcreteDecoratorB extends Decorator {
public ConcreteDecoratorB(Component component) {
super(component);
}
@Override
public void operate() {
super.operate();
addOpration();
}
public void addOpration() {
System.out.println("ConcreteDecoratorB");
}
}
interface Component {
void operate();
}
class ConcreteComponentA implements Component {
@Override
public void operate() {
System.out.println("ConcreteComponentA");
}
}
class ConcreteComponentB implements Component {
@Override
public void operate() {
System.out.println("ConcreteComponentB");
}
}