zoukankan      html  css  js  c++  java
  • 设计模式 命令模式

    定义

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

    动机目的

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

    本质

    本质是对命令进行封装,将发出命令的责任和执行命令的责任分割开。命令模式使请求本身成为一个对象,这个对象和其他对象一样可以被存储和传递

     

    类图

     

     优点

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

    缺点

    使用命令模式可能会导致某些系统有过多的具体命令类。因为针对每一个命令都需要设计一个具体命令类,因此某些系统可能需要大量具体命令类,这将影响命令模式的使用。

     

    适用环境

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

    要点:

    1)命令模式将发出请求的对象和执行请求的对象解耦。

    2)在被解耦的两者之间通过命令对象进行沟通,命令对象封装了接受者和一个或一组动作。

    3)调用者通过调用命令对象的Excute()发出请求,这会使得接受者的动作被调用。

    4)调用者可以接受命令当作参数,甚至在运行时动态进行。

    5)命令支持撤销,做法是实现undo()方法来回倒Excute()被执行前的状态。

    6)宏命令是命令的一种简单延伸,允许调用多个命令。支持撤销。

  • 相关阅读:
    java解析纯真IP数据库,查询IP,导出所有数据,插入oracle
    安装Oracle 9i,提示数据库提取错误
    eclipse(myeclipse)tomcat插件,加载不了工程,空启动,如何解决
    TCP/UDP协议,在QQ中的应用
    QueryExtender控件之RangeExpression
    ASP.NET缓存依赖SQL Server 2005与SQL Server 2008缓存依赖
    QueryExtender控件之PropertyExpression
    QueryExtender控件之CustomExpression
    荣获2009年“微软最有影响力开发者”
    fckeditor编辑器上传文件出现invalid Request问题解决
  • 原文地址:https://www.cnblogs.com/fmys/p/8479225.html
Copyright © 2011-2022 走看看