• 作者:老汪软件技巧
  • 发表时间: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 框架:日志记录:安全校验:数据处理:优缺点

优点:

缺点:


上一条查看详情 +吊打面试官之【Redis的渐进式rehash】
下一条 查看详情 +没有了