装饰模式(Decorator)
关键:让装饰对象拥有被装饰对象的实例,使用时将被装饰对象实例传递给装饰对象进行封装
应用场景:Java I/O 标准库的设计
定义:在不改变现有对象结构的情况下,动态地给该对象增加一些功能
抽象构件:定义一个接口或抽象类作为规范
具体构件:实现抽象构件,作为被装饰对象
抽象装饰:继承抽象构件,拥有具体构件的实例。抽象类
具体装饰:实现抽象装饰,给具体构件增加功能,作为装饰对象
注意:装饰模式所包含的 4 个角色不是任何时候都要存在的,在有些应用环境下模式是可以简化的
//抽象构件
interface Component {
public void operation();
}
//具体构件
class ConcreteComponent implements Component {
public ConcreteComponent() {
...
}
public void operation() {
System.out.println("具体构件:operation()");
}
}
//抽象装饰
public abstract class Decorator extends {
private Component component;
public Decorator(Component component) {
this.component = component;
}
public void operation() {
component.operation();
}
}
//具体装饰
class ConcreteDecorator extends Decorator {
public ConcreteDecorator(Component component) {
super(component);
}
public void operation() {
super.operation();
addFunction();
}
public void addFunction() {
System.out.println("增加功能");
}
}
浙公网安备 33010602011771号