zoukankan      html  css  js  c++  java
  • 大战设计模式【8】—— 命令模式

    命令模式(Command)

    设计模式使用的例子https://github.com/LinkinStars/DesignPatternsAllExample

    一、定义

    将一个请求封装为一个对象,从而可以用不同的请求对客户进行参数化;对请求排队或者记录请求日志,以及支持可撤销的操作。

    命令模式是一种对象行为型模式,其别名为动作(Action)模式或事物(Transaction)模式。

    二、结构

    Command(抽象命令类):一个抽象类或接口,声明了执行请求的Execute()方法,通过这些方法可以调用请求接收者的相关操作。

    ConcreteCommand(具体命令类):具体命令类是抽象命令类的子类,实现了抽象命令类中声明的方法。在实现Execute()方法时,将调用接收者对象的相关操作(Action)。

    Invoker(调用者):请求发送者,通过命令对象来执行请求。

    Receiver(接收者):接收者执行与请求相关的操作,它具体实现对请求的业务处理。

    三、优点

    降低了系统的耦合度,请求发送者与接受者不存在直接引用

    方便地增加新的命令到系统中,无须修改源代码,从而符合开闭原则

    四、缺点

    使用命令模式可能会导致某些系统有过多的具体命令类。

    因为针对每一个对请求接收者的调用操作都需要设计一个具体命令,因此在某些系统中可能需要提供大量的具体命令类。

    五、应用场景

    系统需要将请求调用者和请求接收者解耦

    六、个人总结

    1、命令模式最简单的理解就是,A通过命令让B执行对应的事情。

    其中:A不需要知道B是如何执行的,B不需要知道是谁让他做这个事情,只要收到对应的命令就执行对应的事情

    2、Invoker在其中的作用就像是一个服务员,就是帮你传递命令用的,你需要做的是告诉它你要执行什么命令

    Invoker作为一个服务员也是不需要知道具体是怎么做的

    3、扩展:

    可以利用不同的命令组成宏命令,也就是调用一次执行多个命令的组合

    可以利用空命令来保证不需要判断null,空命令就是什么也不执行

    命令模式常用来处理队列请求和日志请求

    参考博客:http://www.cnblogs.com/edisonchou/p/7355233.html
  • 相关阅读:
    软件项目版本号的命名规则及格式
    你必须知道的C#的25个基础概念
    Visual C#常用函数和方法集汇总
    web标准下的web开发流程思考
    设计模式(5)>模板方法 小强斋
    设计模式(9)>迭代器模式 小强斋
    设计模式(10)>策略模式 小强斋
    设计模式(8)>代理模式 小强斋
    设计模式(7)>观察者模式 小强斋
    设计模式(7)>观察者模式 小强斋
  • 原文地址:https://www.cnblogs.com/linkstar/p/7705049.html
Copyright © 2011-2022 走看看