📅  最后修改于: 2023-12-03 15:12:08.664000             🧑  作者: Mango
装饰器模式是一种结构型设计模式,它允许你动态地将新功能添加到已经存在的对象中。 这种模式创建了一个包装对象,它可以在执行原始对象的所有操作之前或之后执行自己的操作,从而扩展对象的行为。
Component 是一个接口或者抽象类,它定义了被装饰者和装饰者的公共接口。
public interface Component {
void operation();
}
ConcreteComponent 是具体的组件类,它实现了 Component 接口,并定义了需要被装饰的基础功能。
public class ConcreteComponent implements Component {
public void operation() {
System.out.println("I am a ConcreteComponent.");
}
}
Decorator 是一个包装器或者抽象类,它实现了 Component 接口,并在类中维护了一个 Component 类型的对象。
public abstract class Decorator implements Component {
private Component component;
public Decorator(Component component) {
this.component = component;
}
public void operation() {
component.operation();
}
}
ConcreteDecorator 是具体的装饰器类,它继承自 Decorator,并添加了一些自己的功能。
public class ConcreteDecorator extends Decorator {
public ConcreteDecorator(Component component) {
super(component);
}
public void operation() {
super.operation();
addBehavior();
}
private void addBehavior() {
System.out.println("I am a ConcreteDecorator.");
}
}
装饰器模式是一种动态扩展对象功能的设计模式,它通过包装已有的对象,并在运行时动态地增加新的行为,来扩展对象的功能。装饰器模式与继承相比,更为灵活。但是当装饰者过多或装饰链过长时,会导致代码可读性降低。因此,开发者需要掌握如何在项目中正确地使用装饰器模式,以获得最佳的设计效果。