定义
装饰器模式(Decorator Pattern)是一种结构型设计模式,它允许用户在不修改原有对象代码的情况下,通过创建一个装饰类来给对象动态地添加新的功能。装饰器模式通过组合而非继承的方式来扩展对象的功能,这种方式提供了比继承更有弹性的替代方案。
应用场景
装饰器模式通常在以下场景中使用:
- 当需要给一个现有的类添加额外的功能,而不想通过继承增加子类的方式时。
- 当需要给一个对象添加一些职责,并且这些职责可能在未来动态地增加或删除时。
- 当需要构造一个可以装饰其他类的类,以便组合出复杂的行为。
示例
假设有一个简单的Coffee
接口和一个实现类SimpleCoffee
。现在我们想添加额外的功能,例如加糖和加奶,而不修改SimpleCoffee
类:
// 咖啡接口
interface Coffee {double getCost();String getDescription();
}// 基础咖啡实现
class SimpleCoffee implements Coffee {@Overridepublic double getCost() {return 1;}@Overridepublic String getDescription() {return "Simple coffee";}
}// 装饰器抽象类
abstract class CoffeeDecorator implements Coffee {</