C# 装饰器模式(Decorator Pattern)

装饰器模式动态地给一个对象添加一些额外的职责。就增加功能来说,装饰器模式相比生成子类更为灵活。

cs 复制代码
// 组件接口  
public interface IComponent  
{  
    void Operation();  
}  
  
// 具体组件  
public class ConcreteComponent : IComponent  
{  
    public void Operation()  
    {  
        Console.WriteLine("ConcreteComponent.Operation()");  
    }  
}  
  
// 装饰器抽象类  
public abstract class Decorator : IComponent  
{  
    protected IComponent _component;  
  
    public Decorator(IComponent component)  
    {  
        _component = component;  
    }  
  
    public virtual void Operation()  
    {  
        _component.Operation();  
    }  
}  
  
// 具体装饰器  
public class ConcreteDecoratorA : Decorator  
{  
    public ConcreteDecoratorA(IComponent component) : base(component) {}  
  
    public override void Operation()  
    {  
        base.Operation();  
        AddedFunctionality();  
    }  
  
    private void AddedFunctionality()  
    {  
        Console.WriteLine("Added functionality in ConcreteDecoratorA");  
    }  
}  
  
// 客户端代码  
class Program  
{  
    static void Main(string[] args)  
    {  
        IComponent component = new ConcreteComponent();  
  
        // 装饰者模式的使用  
        component = new ConcreteDecoratorA(component);  
  
        // 执行操作  
        component.Operation();  
    }  
}
相关推荐
Lei_33596719 分钟前
[設計模式]二十三種設計模式
设计模式
还是大剑师兰特2 小时前
C#面试题及详细答案120道(86-95)-- 进阶特性
c#·大剑师
吃饺子不吃馅2 小时前
面试官:JWT、Cookie、Session、Token有什么区别?
前端·设计模式·面试
leafff1233 小时前
一文读懂:如何选择适合的RAG系统架构设计模式?
设计模式·自然语言处理·系统架构
我是唐青枫4 小时前
C#.NET ControllerBase 深入解析:Web API 控制器的核心基石
c#·.net
ZHE|张恒5 小时前
设计模式实战篇(一):彻底搞懂 Singleton 单例模式
单例模式·设计模式
O败者食尘D5 小时前
【C#】使用Enigma将Winform或WPF打包成一个exe
c#
The Sheep 20238 小时前
C# 吃一堑,长一智
c#
请叫我阿杰14 小时前
Ubuntu系统安装.NET SDK 7.0
数据库·ubuntu·.net
q***829114 小时前
如何使用C#与SQL Server数据库进行交互
数据库·c#·交互