设计模式:装饰器模式

定义

装饰器模式(Decorator Pattern)是一种结构型设计模式,它允许用户在不修改原有对象代码的情况下,通过创建一个装饰类来给对象动态地添加新的功能。装饰器模式通过组合而非继承的方式来扩展对象的功能,这种方式提供了比继承更有弹性的替代方案。

应用场景

装饰器模式通常在以下场景中使用:

  • 当需要给一个现有的类添加额外的功能,而不想通过继承增加子类的方式时。
  • 当需要给一个对象添加一些职责,并且这些职责可能在未来动态地增加或删除时。
  • 当需要构造一个可以装饰其他类的类,以便组合出复杂的行为。

示例

假设有一个简单的Coffee接口和一个实现类SimpleCoffee。现在我们想添加额外的功能,例如加糖和加奶,而不修改SimpleCoffee类:

// 咖啡接口
interface Coffee {
   
    double getCost();
    String getDescription();
}

// 基础咖啡实现
class SimpleCoffee implements Coffee {
   
    @Override
    public double getCost() {
   
        return 1;
    }

    @Override
    public String getDescription() {
   
        return "Simple coffee";
    }
}

// 装饰器抽象类
abstract class CoffeeDecorator implements Coffee {
   </

相关推荐

  1. 装饰设计模式

    2024-04-04 18:16:02       51 阅读
  2. 设计模式装饰模式

    2024-04-04 18:16:02       66 阅读
  3. 设计模式装饰模式

    2024-04-04 18:16:02       36 阅读
  4. 设计模式 —— 装饰模式

    2024-04-04 18:16:02       24 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-04-04 18:16:02       98 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-04-04 18:16:02       106 阅读
  3. 在Django里面运行非项目文件

    2024-04-04 18:16:02       87 阅读
  4. Python语言-面向对象

    2024-04-04 18:16:02       96 阅读

热门阅读

  1. 如何使用Numpy优化子矩阵运算

    2024-04-04 18:16:02       35 阅读
  2. 机器学习算法与应用

    2024-04-04 18:16:02       36 阅读
  3. Electron无边框自定义窗口拖动

    2024-04-04 18:16:02       36 阅读
  4. WebSocket 对于手游的意义

    2024-04-04 18:16:02       46 阅读
  5. 代码随想录算法训练营第三十六天|leetcode416题

    2024-04-04 18:16:02       41 阅读
  6. MYSQL

    MYSQL

    2024-04-04 18:16:02      27 阅读
  7. 给23年自己的一封信(一点学习心得)

    2024-04-04 18:16:02       41 阅读
  8. C语言 06 无符号数

    2024-04-04 18:16:02       33 阅读
  9. 数据结构之二叉树和平衡二叉树

    2024-04-04 18:16:02       31 阅读