美文网首页
行为型设计模式.命令模式

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

作者: 双鱼子曰1987 | 来源:发表于2017-11-03 14:04 被阅读0次

Command命令的调用者Invoker和接收者Receiver解耦

概念理解

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

    Command.png

Receiver: 接收者
Command: 抽象命令类,需要指定接收者Receiver
ConcreteCommand: 具体命令类
Invoker: 调用者,需要指定需要执行的哪个命令Command

应用和优缺点

  • 解决的问题:
    命令模式可以对发送者和接收者完全解耦,发送者与接收者之间没有直接引用关系,发送请求的对象只需要知道如何发送请求,而不必知道如何完成请求。

  • 应用实例
    struts 1 中的 action 核心控制器 ActionServlet 只有一个,相当于 Invoker,而模型层的类会随着不同的应用有不同的模型类,相当于具体的 Command。

  • 使用场景:
    系统需要将请求调用者和请求接收者解耦,使得调用者和接收者不直接交互。
    系统需要在不同的时间指定请求、将请求排队和执行请求。
    系统需要支持命令的撤销(Undo)操作和恢复(Redo)操作。
    系统需要将一组操作组合在一起,即支持宏命令

  • 优点
    降低系统的耦合度
    新的命令可以很容易地加入到系统中
    可以比较容易地设计一个命令队列和宏命令(组合命令)
    可以方便地实现对请求的Undo和Redo

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

相关文章

网友评论

      本文标题:行为型设计模式.命令模式

      本文链接:https://www.haomeiwen.com/subject/frftmxtx.html