解读设计模式----命令模式(Command Pattern)
***本文与作者原文有一定的偏差,其中加入了一部分是个人看法,详细请查看作者原文。***
原文连接http://www.dofactory.com/Patterns/PatternCommand.aspx
命令模式意图:
GOF 在《设计模式》一书中阐述其意图:“将一个请求封装为一个对象,从而使你可用不同的请求对客户进行参数化;对请求排队或记录请求日志,以及支持可取消的操作。”这里所谓的“不同的请求”也既意味着请求可能发生的变化,是一个可能扩展的功能点。
命令模式UML图:
Command模式将一个请求封装为一个对象,从而使你可以使用不同的请求对客户进行参数化。
简单示例:




运行结果:
Called Receiver.Action()
在众多的设计模式中,Command模式是很简单也很优雅的一种设计模式。Command模式它封装的是命令,把命令发出者的责任和命令执行者的责任分开。[TerryLee]
注意:
如果比较类图结构,我门会发现Command模式、Strategy模式、State模式是完全一样的。事实正是如此,由于他门的设计思想都是对易于变化的部分进行抽象、或为接口。唯一的区别,就是所抽象的行为职责不同而已,这一点从各自的名字就可以看出。
参考资料:
TerryLee------.NET设计模式系列
Bruce Zhang---《软件设计精要与模式》
www.dofactory.com
本文示例源码下载
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· .NET周刊【3月第1期 2025-03-02】
· 分享 3 个 .NET 开源的文件压缩处理库,助力快速实现文件压缩解压功能!
· [AI/GPT/综述] AI Agent的设计模式综述