装饰器模式(Decorator
Pattern)是一种结构型设计模式,用于动态地给对象添加额外的职责,而不改变其原始类的结构。它允许向对象添加行为,而无需生成子类。
实现原理:
装饰器模式通过创建一个包装对象来包裹原始对象,并在包装对象上添加额外的功能。这种模式允许将一个或多个装饰器叠加在原始对象上,从而实现功能的组合。
思路:
- 定义一个抽象组件接口,该接口声明了原始对象和装饰器的公共方法。
- 创建具体组件类,实现抽象组件接口,表示原始对象。
- 创建抽象装饰器类,实现抽象组件接口,包含一个对抽象组件的引用,并在其基础上添加额外的功能。
- 创建具体装饰器类,继承自抽象装饰器类,实现具体的装饰功能。
- 在客户端代码中,通过组合装饰器对象来动态地添加功能。
优点:
- 对扩展开放、对修改封闭:通过装饰器模式,可以在不修改原始类的情况下动态地添加新功能,使得代码更加灵活、可扩展。
- 遵循单一职责原则:每个装饰器只关注于单一功能的添加,使得代码更易于理解和维护。
C#代码示例:
using System;
// 抽象组件接口
interface IComponent
{
void Operation();
}
// 具体组件类
class ConcreteComponent : IComponent
{
public void Operation()
{
Console.WriteLine("ConcreteComponent Operation")