定義:裝飾器模式又稱包裝模式。指在不改變對(duì)象原有功能的前提下,將功能附加到對(duì)象上。相對(duì)于繼承實(shí)現(xiàn)拓展,裝飾其模式能實(shí)現(xiàn)動(dòng)態(tài)拓展。
/**
* 抽象類
*/
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();
}
}
/**
* 原始對(duì)象示例
*/
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();
}
}
調(diào)用示例
public static void main(String[] args) {
Component component=new SampleDecorator();
// 按需添加拓展功能
Decorator decoratorA=new DecoratorA(component);
Decorator decoratorB=new DecoratorB(decoratorA);
decoratorB.doOperation();
}