个人博客
装饰模式
模式介绍
装饰模式也称为包装模式,结构型设计模式之一,其使用一种对客户端透明的方式来动态地扩展对象的功能,同时它也是继承关系的一种替代方案之一。
模式定义
动态地给一个对象添加一些额外的职责。就增加功能来说,装饰模式生成子类更为灵活。
使用场景
需要透明且动态地扩展类的功能时。
简单使用
定义Component
public abstract class Component {
public abstract void operate();
}
定义具体的Component
public class ConcreteComponent extends Component {
@Override
public void operate() {
System.out.println("ConcreteComponent operate");
}
}
定义Decorator
public abstract class Decorator extends Component {
private Component component;
public Decorator(Component component) {
super();
this.component = component;
}
@Override
public void operate() {
component.operate();
}
}
定义具体的Decorator
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");
}
}
调用
public class Main {
public static void main(String[] args) {
Component component = new ConcreteComponent();
Decorator decorator = new ConcreteDecorator(component);
decorator.operate();
}
}
输出结果
operateA
ConcreteComponent operate
operateB
网友评论