zoukankan      html  css  js  c++  java
  • 命令模式(Command Pattern)

    标签: 设计模式


    简介
      数据驱动的设计模式,行为型模式
      定义:将一个请求封装成一个对象,从而让你使用不同的请求把客户端参数化,对请求排队或者记录请求日志,可以提供命令的撤销和恢复功能。
      使命令的发送者和执行者解耦。
      把每个命令(方法)封装成一个对象,以便对多个功能进行封装和处理。

    UML类图

    角色

    客户(Client):创建了一个具体命令(ConcreteCommand)对象并确定其接收者。
    命令(Command)接口:声明了一个给所有具体命令类的抽象接口。这是一个抽象角色。
    具体命令(ConcreteCommand):定义一个接受者和行为之间的弱耦合;实现Execute()方法,负责调用接收考的相应操作。Execute()方法通常叫做执行方法。
    请求者(Invoker):负责调用命令对象执行请求,相关的方法叫做行动方法。
    接收者(Receiver):负责具体实施和执行一个请求。任何一个类都可以成为接收者,实施和执行请求的方法叫做行动方法。

    Invoker是client直接交互的角色,client发出的命令都保存在Invoker的一个Command list里面,最终由Invoker统一执行这个list里面的命令。一般Command接口只包含一个execute()方法,一个具体Command对应着Receiver里面的一个方法。
    适用场景

    1. 命令的发送者和命令执行者有不同的生命周期。命令发送了并不是立即执行。

    2. 命令需要进行各种管理逻辑。

    3. 需要支持撤消重做操作。

    4. 与Struts2中action的调用过程,用户一个请求对应action类里的execute()方法。

    5. 数据库中的事务机制的底层实现。

  • 相关阅读:
    jQuery点击弹出遮罩层(弹出模态框),点击模态框消失
    ubuntu delect opencv
    protobuf安装
    caffe中使用matlab接口
    protobuf安装
    caffe安装2
    caffe安装1
    PHP学习笔记,js
    PHP学习笔记-动态属性添加
    Ubuntu14.04安装Moodle
  • 原文地址:https://www.cnblogs.com/banyu/p/6717875.html
Copyright © 2011-2022 走看看