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();  
    }  
}
相关推荐
码观天工5 分钟前
C#多线程编程精要:从用户线程到线程池的效能进化论
c#·.net·多线程
星星火柴93624 分钟前
观 察 者 模 式
笔记·设计模式
军训猫猫头1 小时前
92.一个简单的输入与显示示例 Maui例子 C#例子
ui·智能手机·c#
月巴月巴白勺合鸟月半2 小时前
工作记录 2017-12-12 + 在IIS下发布wordpress
c#·健康医疗
时光追逐者2 小时前
分享5款开源、美观的 WinForm UI 控件库
ui·开源·c#·.net·winform
碎梦归途7 小时前
23种设计模式-行为型模式之状态模式(Java版本)
java·jvm·设计模式·状态模式·软考·软件设计师·行为模式
冰茶_8 小时前
WPF之RadioButton控件详解
学习·microsoft·c#·wpf
碎梦归途11 小时前
23种设计模式-行为型模式之访问者模式(Java版本)
java·开发语言·jvm·设计模式·软考·软件设计师·行为型模式
摘星编程12 小时前
并发设计模式实战系列(11):两阶段终止(Two-Phase Termination)
设计模式·并发编程
开开心心就好15 小时前
无限制文本转语音解决方案
开发语言·人工智能·macos·微信·pdf·c#·语音识别