用途


命令模式 (Command)
将一个请求封装为一个对象,从而使你可以用不同的请求对客户进行参数化
对请求排队或请求日志,以及支持可撤销的操作。

命令模式是一种行为型模式

结构

aaarticlea/png;base64,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IjnLSMHplCu+tBkpVCrVlClT7r///vHjx6empkZHR7ds2fK1115jI1lkMlmXLl1SU1NTU1O7dOnSu3fv7777Lj//wmuvjmjZsmV0dDT70f79+9lxl8lkvXv37t27t7zfi6rq8imTJztT840bN7777rvevXtbbys7O9tepIiLi3vssccGDRqUmpq6atWq9u3bDxw4cN++fSw8tW/fftWqVampqYMGDXrsscemTZtmr2a2F+PHj7///vsnTJiwdu1afq24uDi2rf3797PV3fh8xo8fj0gBnpM+Umg0mi+//LK4uFhQRiinRaQIdA4ihemyWkpp41FmZ0JMTMzcuXPnz5+fmrqBn/li7969bCLNL7/8UqPRyOXyl19+mV19hefPiRMnFppYlyxcuPDEiROU0itXrsTHx0dFRRUWFrJNFxUVRUVFxcfHm5+HXtG474Rj+xUXFzfX5NixY95ugP+wjBREr1zxlc1IwUcBdkY1XsKz9immThZ+PcFHUpuXeb6eIUOGzJ07NyUlhS9hZ9SkSZP4tay/+GAlHTt2ZKdTp06dHGzLoj0We2G6H9PwW2CxLXt7YXYXh+gt9v37779nDXOwF07VbIJIAa6SPlJgxEewsh0pGu8K3HvrRnHDA+rESM3PBOHF5tChQ5999tnIkSNHjhz5zjvvsPcl9OjRY+TIkdHR0fxaeXl5CQkJI02Sk5OLioqUSuW9997LFyYkJOTl5dnsKH12HmZnZ7dv3379+vU//fTTsGHDZDJZt27dfgpJ77//vpNffNiNFJl7FFPet3HJnDolO+uAg0hh8bYPmUzGzijeuXPn7EUK4Rk1cuTI1atXexYpiikxunPh5+r5fddqtbt37+7WrRvbi759+zYRKaw+H0QKEAUiBXiLdaQoLS29VHDuUsG577///u677/71118vXbp0qeDczesl1H6kcPwqJ9NaWYqpU1nHLVzG4u9g9m4GySNFs2bNOnXq9Oijj4aFhclkstatWz8aku677z5PI4W9S+aUSdmZu12KFNbx116ksH5g04NI0bCn7t1L4Nfy/POx+uQJpQSRAlyFSAHeYh0FBg4c2KJFixYtWrDH41uYfPTRNOphpDiwUzFlYqBEivDw8D///FOn002ePFkmk/Xr108Xkr7++mtvRQrFVMdffIR6pLD6fCw/ea6OcnWIFOAq6SOFwWA4e/Zs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" alt="" />

图-命令模式结构图

Command : 用来声明执行操作的接口。
abstract class Command {

    protected Receiver receiver;

    public Command(Receiver receiver) {

        this.receiver = receiver;

    }

    

    public abstract void Execute();

}

ConcreteCommand : 将一个接收者对象绑定一个动作,调用接收者相应的操作,以实现Execute。

class ConcreteCommand extends Command {

    public ConcreteCommand(Receiver receiver) {

        super(receiver);

    }

    @Override

    public void Execute() {

        receiver.Action();

    }

}

Invoker : 要求该命令执行这个请求。

class Invoker {

    private Command command;

    

    public Invoker(Command command) {

        this.command = command;

    }

    

    public void ExecuteCommand() {

        command.Execute();

    }

}

Receiver : 知道如何实施与执行一个与请求相关的操作,任何类都可能作为一个接收者。

class Receiver {

    public void Action() {

        System.out.println("执行请求");

    }

}

Client : 创建一个具体命令对象并设定它的接受者。

public class CommandPattern {

    public static void main(String[] args) {

        Receiver receiver = new Receiver();

        Command cmd = new ConcreteCommand(receiver);

        Invoker invoker = new Invoker(cmd);

        invoker.ExecuteCommand();

    }

}
交互

aaarticlea/png;base64,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" alt="" />

图-命令模式交互图

1、Client 创建一个 ConcreteCommand 对象并指定他的 Receiver 对象。
2、某个 Invoker 对象存储该 ConcreteCommand 对象。
3、该 Invoker 通过调用 Command 对象的 Execute 操作来提交一个请求。若该命令是可撤销的,ConcreteCommand 就在执行 Execute 操作之前存储当前状态以用于取消该命令。
4、ConcreteCommand 对象对调用它的 Receiver 的一些操作以执行该请求。
要点

1、命令模式的本质是对命令进行封装,将发出命令的责任和执行命令的责任分割开。
2、每一个命令都是一个操作:请求的一方发出请求,要求执行一个操作;接收的一方收到请求,并执行操作。
3、命令模式允许请求的一方和接收的一方独立开来,使得请求的一方不必知道接收请求的一方的接口,更不必知道请求是怎么被接收,以及操作是否被执行、何时被执行,以及是怎么被执行的。
4、命令模式使请求本身成为一个对象,这个对象和其他对象一样可以被存储和传递。
5、命令模式的关键在于引入了抽象命令接口,且发送者针对抽象命令接口编程,只有实现了抽象命令接口的具体命令才能与接收者相关联。
推荐

本文属于 JAVA设计模式系列

参考资料

《大话设计模式》

《HeadFirst设计模式》

JAVA 设计模式 命令模式的更多相关文章

  1. 【设计模式】Java设计模式 - 命令模式

    Java设计模式 - 命令模式 生命不息,写作不止 继续踏上学习之路,学之分享笔记 总有一天我也能像各位大佬一样 一个有梦有戏的人 @怒放吧德德 分享学习心得,欢迎指正,大家一起学习成长! 目录 Ja ...

  2. Java设计模式-命令模式(Command)

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

  3. JAVA设计模式---命令模式

    1.定义: 将“请求”封装成对象,以便使用不同的请求.队列或者日志来参数化其他对象,命令模式也支持可撤销的操作.命令可以用来实现日志和事务系统. 2.实例: 1)需求:设计一个家电遥控器的API,遥控 ...

  4. Java设计模式—命令模式

    命令模式是一个高内聚的模式. 定义如下:将一个请求封装成一个对象,从而让你使用不同的请求把客户端参数化,对请求排队或者记录请求日志,可以提供命令的撤销和恢复功能. 通用类图如下: 角色说明: ● Re ...

  5. Java设计模式の命令模式

    意图: 将一个请求封装为一个对象,从而可用不同的请求对客户进行参数化:对请求排队或记录日志,以及支持可撤销的操作 动机: 将”发出请求的对象”和”接收与执行这些请求的对象”分隔开来. 效果: 1).c ...

  6. linkin大话设计模式--命令模式

    linkin大话设计模式--命令模式 首先考虑一种应用情况,某个方法需要完成某一个功能,这个功能的大部分功能已经确定了,但是有可能少量的步骤没法确定,必须等到执行这个方法才可以确定. 也就是说,我们写 ...

  7. Java设计模式——组合模式

    JAVA 设计模式 组合模式 用途 组合模式 (Component) 将对象组合成树形结构以表示“部分-整体”的层次结构.组合模式使得用户对单个对象和组合对象的使用具有唯一性. 组合模式是一种结构型模 ...

  8. java设计模式--单列模式

    java设计模式--单列模式 单列模式定义:确保一个类只有一个实例,并提供一个全局访问点. 下面是几种实现单列模式的Demo,每个Demo都有自己的优缺点: Demo1: /** * 单列模式需要满足 ...

  9. 3.java设计模式-建造者模式

    Java设计模式-建造者模式 在<JAVA与模式>一书中开头是这样描述建造(Builder)模式的: 建造模式是对象的创建模式.建造模式可以将一个产品的内部表象(internal repr ...

随机推荐

  1. 。net初学

    这一周主要是对.net语法基础知识的简介以及一些作业练习,大部分还是与c语言有关联.一开始语法上有差异,写起代码来有困难,逻辑有点转换不过来.但是通过上周的练习,现在写起 作业来,还是挺快的.     ...

  2. Angular 2 + Electron 开发web和桌面应用

    https://github.com/zhongzf/angular2-electron-quickstart Web用法: # Clone this repository git clone htt ...

  3. SqlServer2012 数据库的同步之SQL JOB + 建立链接服务器

         文章参考百度过的文章,现在忘了具体哪篇,感谢其分享,这里根据自己的操作和遇到的问题整理一下.      需求:在两个不同的SQL SERVER 2012的服务器之间进行数据访问和更新.我们需 ...

  4. SQL SERVER 2012 只能识别20个CPU的问题

    背景 最近在给客户优化时时候发现客户的虚拟机环境分配了32C 但是只能识别20个,物理机64C,64G内存,本来没什么,CPU利用率在40%左右,但是优化后同时增加了 CPU和内存的分配,CPU32增 ...

  5. 【腾讯Bugly干货分享】TRIM:提升磁盘性能,缓解Android卡顿

    Bugly 技术干货系列内容主要涉及移动开发方向,是由 Bugly 邀请腾讯内部各位技术大咖,通过日常工作经验的总结以及感悟撰写而成,内容均属原创,转载请标明出处.在业内,Android 手机一直有着 ...

  6. java提高篇(二三)-----HashMap

    HashMap也是我们使用非常多的Collection,它是基于哈希表的 Map 接口的实现,以key-value的形式存在.在HashMap中,key-value总是会当做一个整体来处理,系统会根据 ...

  7. Cassandra中的数据一致性

       Cassandra中数据一致性指的是数据行在各个复制节点(replicas)上的更新和同步程度.通过提供tunable consistency,Cassandra扩展了eventual cons ...

  8. HTML+CSS学习笔记

    1,html里的实际有6个<hn>标记,从<h1>到<h6>,字体由大到小. 2,em标签表示斜体. 3,<p>标签是换一个段落,<br>标 ...

  9. Atitit j2ee5 jee5 j2ee6 j2ee7 jee6 jee7 新特性

    Atitit j2ee5 jee5 j2ee6 j2ee7 jee6 jee7 新特性 Keyword Java ee5 ,Java ee6,Java ee7  j2ee5 jee5 j2ee6 j2 ...

  10. iOS-策略模式

    在实际开发过程中,app需求都是由产品那边给出,往往是他给出第一版功能,我们写好代码后,会相应的给出第二版.第三版功能,而这些功能是在实际使用中,根据用户需求而不断增加的.如果在编码之初,我们并未认识 ...