Files
Hui-s-notebook/203-Java/203.1-Java面试/205.19-网络&操作系统/命令模式.md
2023-09-10 10:50:53 +08:00

932 B

Encapsulate a request as an object,thereby letting you parameterize clients with different requests,queue or log requests,and support undoable operations.(将一个请求封装成一个对象,从而让你使用不同的请求把客户端参数化,对请求排队或者记录请求日志,可以提供命令的撤销和恢复功能。)

  • Receive 接受者角色
  • Command 命令角色
  • Invoker 调用者角色

优点

  • 类间解耦
  • 可扩展性
  • 结合其它模式(命令链模式,模板方法模式)会更优秀

缺点

Command 子类如果有 N 个命令,就会有 N 个子类,这个类膨胀的非常大

使用场景

只要认为是命令的地方就可以用命令模式, GUI 开发一个按钮的点击, 模拟 DOS 命令, 触发-反馈机制的处理

反悔问题

发出一个命令,要撤回

  • 结合备忘录模式还原最后状态
  • 增加一个新的命令,实现事件的回滚