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


    命令模式

    “请求”封装成对象(命令对象),以便使用不同的请求、队列或者日志来参数化其他对象。命令模式也支持可撤销的操作。

    使用场景

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

    基本类图



    示例:具体需求

    现在有如下请求:希望能通过遥控器实现:开灯、关灯、开门、关门等;
    开灯、关灯的具体执行是在Light类中,开门、关门的具体执行是在Door类中;
    现在希望把开关灯、开关门的请求封装到Command对象中。

    类图及目录结构



    Command接口


    Receiver




    ConcreteCommand:封装具体的请求

    共有4个Command:
    1. 开灯请求;
    2. 开门请求;
    3. 无任何操作的请求;
    4. 宏请求:可以包含多个Commands








    Invoke 调用者

    个人理解:
    之所以需要通过调用者来执行Command,而不是直接command.execute(),主要有如下好处:
    1.  通过client调用时,比较统一;
    2. 可以在Invoke中封装undo以及redo命令;

    client 程序测试



    高级用法











  • 相关阅读:
    团队总结-文艺复兴
    文艺复兴-冲刺总结
    文艺复习-测试博客
    文艺复习-冲刺集合
    冲刺第一天
    凡事预则立
    2020软件工程作业05
    2020软件工程作业04
    前端怎么去学
    十、Kernel_3.0.35版本和Kernel_4.1.15版本在SPI驱动实现机制的差异
  • 原文地址:https://www.cnblogs.com/ssslinppp/p/5555299.html
Copyright © 2011-2022 走看看