设计模式之命令模式
命令模式(Command)
一、定义
一个将请求封装为一个对象,从而可以用不同的请求对客户进行参数化;对请求排队或者记录请求日志,以及支持可撤销的操作。
命令模式是一种对象行为模式,其别名为动作模式或者事物模式
二、结构
Command(抽象命令类):一个抽象类或者接口,声明了执行请求的Execute方法,通过这些方法可以调用请求接受者的相关操作
ConcreteCommond(具体抽象命令类):具体命令类是抽象命令类的子类,实现了抽象命令中声明的方法,在实现Execute方法时,将调用接受者对象的相关操作
Invoker(调用者):请求发送者,通过命令对象来执行请求
Receiver(接收者):接收者执行与请求相关的操作,它具体实现对请求的业务处理
三、优点
降低了系统耦合度,请求发送者与接收者不存在直接引用
方便地增加了新命令到系统中,无需修改源代码,从而符合开闭原则
四、缺点
使用命令模式可能会导致某些系统有过多的具体命令类
因为针对每一个请求接收者的调用操作都需要设计一个具体命令,因此在某些系统中可能需要提供大量的具体命令类
五、应用场景
系统需要将请求调用者和请求接收者解耦
六、个人总结
1、命令模式最简单的理解是,A通过命令让B执行对应的事
2、Invoker在其中的作为就像一个服务员,就是帮你传递命令用的,你需要做的是告诉它你要执行什么命令
Invoker作为一个服务员也是不需要知道具体是怎么做的
3、扩展
可以利用不同的命令组成宏命令,也就是调用一次执行多个命令的组合
可以利用空命令来保证不需要判断null,空命令就是什么也不执行
命令模式常用来处理队列请求和日志请求
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY