个人博客
http://www.milovetingting.cn
装饰模式
模式介绍
装饰模式也称为包装模式,结构型设计模式之一,其使用一种对客户端透明的方式来动态地扩展对象的功能,同时它也是继承关系的一种替代方案之一。
模式定义
动态地给一个对象添加一些额外的职责。就增加功能来说,装饰模式生成子类更为灵活。
使用场景
需要透明且动态地扩展类的功能时。
简单使用
定义Component
1 2 3 4 5
| public abstract class Component {
public abstract void operate();
}
|
定义具体的Component
1 2 3 4 5 6 7 8
| public class ConcreteComponent extends Component {
@Override public void operate() { System.out.println("ConcreteComponent operate"); }
}
|
定义Decorator
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
| public abstract class Decorator extends Component {
private Component component;
public Decorator(Component component) { super(); this.component = component; }
@Override public void operate() { component.operate(); }
}
|
定义具体的Decorator
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22
| public class ConcreteDecorator extends Decorator {
public ConcreteDecorator(Component component) { super(component); }
@Override public void operate() { operateA(); super.operate(); operateB(); }
public void operateA() { System.out.println("operateA"); }
public void operateB() { System.out.println("operateB"); }
}
|
调用
1 2 3 4 5 6 7 8 9
| public class Main {
public static void main(String[] args) { Component component = new ConcreteComponent(); Decorator decorator = new ConcreteDecorator(component); decorator.operate(); }
}
|
输出结果
1 2 3
| operateA ConcreteComponent operate operateB
|