行为型设计模式.命令模式

一、概念

本质是一种数据驱动、事件驱动的设计模式。

1.1、定义

又称为动作(Action)模式或事务(Transaction)模式。将一个请求封装为一个对象,从而使我们可用不同的请求对客户进行参数化;对请求排队或者记录请求日志,以及支持可撤销的操作。


Command.png
  • Receiver,接收者类:封装命令的执行过程
  • Command,命令类抽象:对命令的封装,其需要指定接收者Receiver
  • Invoker,调用者类:封装命令的实际调用者,执行的时候需要指定具体的ConcreteCommand
  • ConcreteCommand,具体命令类
1.2、解决的问题
  • 问题分析:存在这样一种场景,派发一个事件Event,执行对应的动作。即
  • 模式的解决思路:将「命令Command」的「调用者Invoker」和「接收者Receiver」隔离解耦,命令、调用者、接收者彼此独立变化。
    命令模式可以对发送者和接收者完全解耦,发送者与接收者之间没有直接引用关系,发送请求的对象只需要知道如何发送请求,而不必知道如何完成请求。

二、模式的应用和优缺点

2.1、应用场景
  • 实例:
    struts 1 中的 action 核心控制器 ActionServlet 只有一个,相当于 Invoker,而模型层的类会随着不同的应用有不同的模型类,相当于具体的 Command。
2.2、优缺点
  • 优点
    降低系统的耦合度
    新的命令可以很容易地加入到系统中
    可以比较容易地设计一个命令队列和宏命令(组合命令)
    可以方便地实现对请求的Undo和Redo

  • 缺点
    可能会导致某些系统有过多的具体命令类,增加系统的复杂性。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容