1. 概念
动态地给一个对象增加一些额外的职责,就增加对象功能来说,装饰模式比生成子类实现更为灵活。装饰模式是一种对象结构型模式。
2. 使用场景
在不影响其他对象的情况下,以动态、透明的方式给单个对象添加职责。
当不能采用继承的方式对系统进行扩展或者采用继承不利于系统扩展和维护时可以使用装饰模式。
image.png
3. 特性
对于扩展一个对象的功能,装饰模式比继承更加灵活,不会导致类的个数急剧增加
可以通过一种动态的方式来扩展一个对象的功能
可以对一个对象进行多次装饰,通过使用不同的具体装饰类以及这些装饰类的排列组合
具体的装饰类可以独立变化
4. 实例
interface Component {
public void operation();
}
public class Decorator implements Component {
private Component component;
public Decorator(Component component) {
this.component = component;
}
@Override
public void operation() {
component.operation();
}
}
public class ConcreateDecorator extends Decorator {
public ConcreateDecorator(Component component) {
super(component);
}
public void operation() {
super.operation();
addBehavior();
}
public void addBehavior() {
}
}
网友评论