说说设计模式~装饰器模式(Decorator)
装饰器模式,也叫又叫装饰者模式,顾名思义,将一个对象进行包裹,包装,让它变成一个比较满意的对象,这种模式在我们平时项目开发中,经常会用到,事实上,它是处理问题的一种技巧,也很好的扩展了程序,让程序代码不那么死板!
何时能用到它?
1. 需要扩展一个类的功能,或给一个类添加附加职责。
2. 需要动态的给一个对象添加功能,这些功能可以再动态的撤销。
3. 需要增加由一些基本功能的排列组合而产生的非常大量的功能,从而使继承关系变的不现实。
4. 当不能采用生成子类的方法进行扩充时。
其中我们认为第四种使用是比较巧妙的,这一讲中,主要是以第四讲为例来说明的
装饰器模式的结构图
装饰器模式实现说明
IAction:装饰器标准接口,所有装饰功能都要实现它
DelegateAction:装饰类,用来实现IAction插口的功能,并对外部提供另一种表现形式
StandardAction:标准实现类,用来实现IAction插口的功能,对外展示也是以IAction接口为准的
Implement:对外公开的调用类,它向外界公开两种接口方法,一是IAction接口标准,一是Action<int>委托标准
装饰器模式的C#实现
#region 装饰模式 public interface IAction { void Print(int a); } sealed class DelegateAction : IAction { Action<int> _action; public DelegateAction(Action<int> action) { _action = action; } public void Print(int a) { _action(a); } } public class standardAction : IAction { public void Print(int a) { Console.WriteLine("标准实现装饰器" + a); } } public class Implement { public void Run(IAction action) { action.Print(10); } public void Run(Action<int> action) { new DelegateAction(action).Print(10); } } #endregion
调用的代码
Implement implement = new Implement(); implement.Run((a) => Console.WriteLine(a));//委托Action<int>调用法 implement.Run(new standardAction());//IAction对象调用法
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
· 没有源码,如何修改代码逻辑?
· 一个奇形怪状的面试题:Bean中的CHM要不要加volatile?
· [.NET]调用本地 Deepseek 模型
· 一个费力不讨好的项目,让我损失了近一半的绩效!
· 没有源码,如何修改代码逻辑?
· PowerShell开发游戏 · 打蜜蜂
· 在鹅厂做java开发是什么体验
· 百万级群聊的设计实践
· WPF到Web的无缝过渡:英雄联盟客户端的OpenSilver迁移实战
2013-08-05 我心中的核心组件(可插拔的AOP)~第二回 缓存拦截器