定义:装饰器模式又称包装模式。指在不改变对象原有功能的前提下,将功能附加到对象上。相对于继承实现拓展,装饰其模式能实现动态拓展。
/**
* 抽象类
*/
public abstract class Component{
public abstract void doOperation();
}
/**
* 装饰器
*/
public abstract class Decorator extends Component{
private Component component;
public Decorator(Component component){
this.component=component;
}
@Override
public void doOperation(){
this.component.doOperation();
}
}
/**
* 原始对象示例
*/
public class SampleDecorator extends Component{
@Override
public void doOperation() {
System.out.println("original operation");
}
}
/**
* 装饰器A
*/
public class DecoratorA extends Decorator {
public DecoratorA(Component compontent) {
super(compontent);
}
public void customOperationA(){
System.out.println("decortorA operation");
}
@Override
public void doOperation() {
customOperationA();
super.doOperation();
}
}
/**
* 装饰器B
*/
public class DecoratorB extends Decorator {
public DecoratorB(Component compontent) {
super(compontent);
}
public void customOperationB(){
System.out.println("decortorB operation");
}
@Override
public void doOperation() {
customOperationB();
super.doOperation();
}
}
调用示例
public static void main(String[] args) {
Component component=new SampleDecorator();
// 按需添加拓展功能
Decorator decoratorA=new DecoratorA(component);
Decorator decoratorB=new DecoratorB(decoratorA);
decoratorB.doOperation();
}
网友评论