- 作者:老汪软件技巧
- 发表时间:2024-12-27 07:06
- 浏览量:
装饰器模式详解定义
装饰器模式(Decorator Pattern)是一种结构型设计模式,允许动态地向对象添加新功能,而不改变其结构。装饰器模式通过将对象放入包含行为的新对象中,解决了继承的局限性。
核心思想:通过创建一个装饰类,用来包装原有的类,并在保持类方法签名完整的同时,增强其功能。
示例代码Java 实现:
// 基础接口
interface Component {
void operation();
}
// 基础实现类
class ConcreteComponent implements Component {
@Override
public void operation() {
System.out.println("基本功能");
}
}
// 抽象装饰器
abstract class Decorator implements Component {
protected Component component;
public Decorator(Component component) {
this.component = component;
}
@Override
public void operation() {
component.operation();
}
}
// 具体装饰器A
class ConcreteDecoratorA extends Decorator {
public ConcreteDecoratorA(Component component) {
super(component);
}
@Override
public void operation() {
super.operation();
System.out.println("装饰器A增强功能");
}
}
// 具体装饰器B
class ConcreteDecoratorB extends Decorator {
public ConcreteDecoratorB(Component component) {
super(component);
}
@Override
public void operation() {
super.operation();
System.out.println("装饰器B增强功能");
}
}
// 测试
public class Main {
public static void main(String[] args) {
Component component = new ConcreteComponent(); // 原始组件
Component decoratedComponentA = new ConcreteDecoratorA(component); // 添加装饰器A
Component decoratedComponentB = new ConcreteDecoratorB(decoratedComponentA); // 添加装饰器B
decoratedComponentB.operation(); // 执行最终功能
}
}
输出:
基本功能
装饰器A增强功能
装饰器B增强功能
使用场景动态扩展对象的功能:职责分离:在运行时组合行为:源码中的应用Java I/O 流
InputStream input = new FileInputStream("file.txt");
InputStream bufferedInput = new BufferedInputStream(input);
InputStream dataInput = new DataInputStream(bufferedInput);
Spring FrameworkGolang 的 HTTP Handler应用场景UI 框架:日志记录:安全校验:数据处理:优缺点
优点:
缺点: