public class TestDecorator {
public static void main(String[] args) {
Component component = new ConreteDecoratorBeauty(new ConreteDecoratorFilter(new ConcreteComponent()));
component.operation();
}
}
public interface Component {
void operation();
}
public class ConcreteComponent implements Component{
@Override
public void operation() {
System.out.println("拍照功能");
}
}
public abstract class Decorator implements Component{
Component component;
public Decorator(Component component) {
this.component = component;
}
}
public class ConreteDecoratorBeauty extends Decorator{
public ConreteDecoratorBeauty(Component component) {
super(component);
}
@Override
public void operation() {
System.out.println("添加美颜功能");
component.operation();
}
}
public class ConreteDecoratorFilter extends Decorator {
public ConreteDecoratorFilter(Component component) {
super(component);
}
@Override
public void operation() {
System.out.println("添加滤镜功能");
component.operation();
}
}