装饰模式(Decorator Pattern)也称为包装模式(Wrapper Pattern),结构化设计模式之一。
它使用一种对客户端透明的方式来动态地扩展对象,同时它也是继承关系地一种替代方案之一。
动态地给一个对象添加一些额外的职责。就增加功能来说,装饰模式相比生成子类更加灵活。
需要透明且动态地扩展类地功能时。
Component.java
/**
* 抽象组件类
*/
public abstract class Component {
public abstract void operate();
}
ConcreateComponent.java
/**
* 组件具体实现类
*/
public class ConcreateComponent extends Component {
@Override
public void operate() {
System.out.println("Operate!!!");
}
}
Decorator.java
/**
* 抽象装饰者
*/
public abstract class Decorator extends Component {
private Component component;
public Decorator(Component component) {
this.component = component;
}
@Override
public void operate() {
component.operate();
}
}
ConcreateDecoratorA.java
public class ConcreateDecoratorA extends Decorator {
public ConcreateDecoratorA(Component component) {
super(component);
}
@Override
public void operate() {
//装饰方法A和B既可在父类方法之前调用,也可以在之后调用
operateA();
super.operate();
operateB();
}
public void operateA() {
//装饰方法逻辑
}
public void operateB() {
//装饰方法逻辑
}
}