命令模式Command

原创 2011年01月21日 15:49:00

1 意图:把一个请求或者操作封装到一个对象中。把发出命令的职责和执行命令的责任分割开,委托给不同的对象。可以对请求排队、日志,提供命令的撤销和恢复。

 

2 角色:共有5个角色

客户端 Client:创建具体命令对象并确定其接收者。

命令:抽象命令

具体命令:实现execute方法,调用接收者的响应操作。

请求者 Invoker :负责调用命令对象请求

接收者 Receiver:负责具体实施和执行一个请求。

 

3 类图

 

4 实际例子

TagInventoryProcessor相当于Invoker角色

IAdapterCommand角色相当于抽象命令Command角色

SingleInventoryCommand相当于具体命令角色

Receiver 的onCommand方法相当于action;

 

Receiver角色类似于控制器,把消息转发给相应的处理器。这个例子同样适用于基于观察者模式的JMS消息的MessageListener中onMessage(Message msg)方法。

 

方法onCommad的组合了底层处理器的工厂,具体工厂根据不同命令创建不同的处理器,复用Receiver的代码,在开发中,将具体工厂的注入到Receiver的不同实例中。命令模式结合工厂方法模式,上层添加了新的命令,下层根据接收者不同的命令添加相应工厂和处理器,不需要修改Receiver的代码,只需要再添加Spring的配置文件,增加一类命令。

命令模式(Command Pattern)(一):命令模式介绍

一、意图              将一个请求封装为一个对象,从而使你可用不同的请求对客户进行参数化;对请求排队或记录请求日志,以及支持可撤消的操作。 二、适用性 ...
  • jialinqiang
  • jialinqiang
  • 2013年05月18日 23:16
  • 2904

Java开发中的23种设计模式详解----命令模式(Command)

命令模式很好理解,举个例子,司令员下令让士兵去干件事情,从整个事情的角度来考虑,司令员的作用是,发出口令,口令经过传递,传到了士兵耳朵里,士兵去执行。这个过程好在,三者相互解耦,任何一方都不用去依赖其...
  • sjyttkl
  • sjyttkl
  • 2017年06月21日 12:23
  • 935

设计模式 —— 命令模式(Command Pattern)

命令模式(Command Pattern)概念: 概述:在软件设计中,我们经常会遇到某些对象发送请求,然后某些对象接受请求后执行,但发送请求的对象可能并不知道接受请求的对象是谁,执行的是什么动作。...
  • wwh578867817
  • wwh578867817
  • 2016年05月29日 18:34
  • 1231

【C#设计模式-命令模式】

一.定义: 命令模式是将一类对象的功能操作进行抽象,一般来说,这些对象有相同的方法,所以这类对象有着类似的操作,我们通过抽象,就可以定义出一个命令对象,通过这样的方式,用户程序在使用的时候,只与该命令...
  • heyangyi_19940703
  • heyangyi_19940703
  • 2016年05月04日 15:06
  • 966

浅谈JAVA设计模式之——命令模式(Command)

一、概述 将一个请求封装为一个对象,从而使你可用不同的请求对客户进行参数化;对请求排队或记录请求日志,以及支持可撤消的操作。 二、适用性 1.抽象出待执行的动作以参数化某对象。 2.在不同的时刻指...
  • l1028386804
  • l1028386804
  • 2015年05月08日 00:22
  • 4070

设计模式之命令模式---Command Pattern

模式的定义命令模式是一个高内聚的模式,定义如下:Encapsulate a request as an object,thereby letting you parameterize clients ...
  • hfreeman2008
  • hfreeman2008
  • 2016年08月06日 10:37
  • 1582

设计模式(行为型)之命令模式(Command Pattern)

在软件开发中,我们经常需要向某些对象发送请求(调用其中的某个或某些方法),但是并不知道请求的接收者是谁,也不知道被请求的操作是哪个,此时,我们特别希望能够以一种松耦合的方式来设计软件,使得请求发送者与...
  • yanbober
  • yanbober
  • 2015年05月05日 11:49
  • 3165

Unity游戏设计模式(一)命令模式(Command Pattern)

我想大部分的新人跟我一样刚开始学习Unity的时候,控制人物行的写法是这样的。 using UnityEngine; using System.Collections; public class ...
  • RinKas
  • RinKas
  • 2016年09月29日 10:46
  • 1871

C++命令模式

命令模式(Command Pattern)是一种数据驱动的设计模式,它属于行为型模式。请求以命令的形式包裹在对象中,并传递给调用对象。调用对象寻找可以处理该命令的合适对象,并把该命令传给相应的对象,该...
  • u011012932
  • u011012932
  • 2017年03月14日 22:17
  • 1461

【JS设计模式】命令模式

模式结构 Command: 定义命令的接口,声明执行的方法。 ConcreteCommand: 命令接口实现对象,是“虚”的实现;通常会持有接收者,并调用接收者的功能来完成命令要执行的操作。 Rece...
  • itpinpai
  • itpinpai
  • 2015年08月08日 20:43
  • 2198
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:命令模式Command
举报原因:
原因补充:

(最多只允许输入30个字)