`

17、命令模式

 
阅读更多

命令模式

 

1、定义

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

 

 2、结构图



 

  ●  客户端(Client)角色:创建一个具体命令(ConcreteCommand)对象并确定其接收者。

  ●  命令(Command)角色:声明了一个给所有具体命令类的抽象接口。

  ●  具体命令(ConcreteCommand)角色:定义一个接收者和行为之间的弱耦合;实现execute()方法,负责调用接收者的相应操作。execute()方法通常叫做执行方法。

  ●  请求者(Invoker)角色:负责调用命令对象执行请求,相关的方法叫做行动方法。

  ●  接收者(Receiver)角色:负责具体实施和执行一个请求。任何一个类都可以成为接收者,实施和执行请求的方法叫做行动方法。

 

3、代码

(1)接收者Receiver

public class Receiver {
	
	public void action(){
		System.out.println("执行action请求");
	}

}

 

(2)命令接口
public interface Command {
	
	public void execute();

}
 (3)具体命令
public class ConcreteCommand implements Command{
	
	public ConcreteCommand(Receiver receiver) {
		super();
		this.receiver = receiver;
	}
	
	private Receiver receiver;
	
	@Override
	public void execute() {
		receiver.action();
	}

}
 (4)请求者
public class Invoker {
	
	public Invoker(Command command) {
		super();
		this.command = command;
	}

	private Command command;
	
	public void action(){
		command.execute();
	}

}
 (5)客户端
public class Client {
	
	public static void main(String[] args) {
		Invoker invoker = new Invoker(new ConcreteCommand(new Receiver()));
		invoker.action();
	}

}
 
 
4、总结

  ●  更松散的耦合

  命令模式使得发起命令的对象——客户端,和具体实现命令的对象——接收者对象完全解耦,也就是说发起命令的对象完全不知道具体实现对象是谁,也不知道如何实现。

  ●  更动态的控制

  命令模式把请求封装起来,可以动态地对它进行参数化、队列化和日志化等操作,从而使得系统更灵活。

  ●  很自然的复合命令

  命令模式中的命令对象能够很容易地组合成复合命令,也就是宏命令,从而使系统操作更简单,功能更强大。

  ●  更好的扩展性

  由于发起命令的对象和具体的实现完全解耦,因此扩展新的命令就很容易,只需要实现新的命令对象,然后在装配的时候,把具体的实现对象设置到命令对象中,然后就可以使用这个命令对象,已有的实现完全不用变化。

  • 大小: 8.3 KB
分享到:
评论

相关推荐

    [源代码] 修炼Java开发技术 在架构中体验设计模式和算法之美 (源代码)

    - (Chapter15.rar)Chapter 16 解释器模式 - (Chapter16.rar)Chapter 17 命令模式 - (Chapter17.rar)Chapter 18 迭代器模式 - (Chapter18.rar)Chapter 19 中介者模式 - (Chapter19.rar)Chapter 20 备忘录模式 - ...

    java设计模式

    15.3.3 命令模式的使用场景 15.4 命令模式的扩展 15.4.1 未讲完的故事 15.4.2 反悔问题 15.5 最佳实践 第16章 责任链模式 16.1 古代妇女的枷锁—“三从四德” 16.2 责任链模式的定义 16.3 责任链模式的应用 16.3.1 ...

    MA5800操作命令参考

    为便于用户使用这些命令,系统按照命令的功能对命令进行分类存放,相关的命令放在相应的命令模式中。需要先进入相应的模式才能执行相关的命令。MA5800提供多种命令模式,以实现分级保护,防止未授权用户的非法侵入。

    .NET设计模式(17):命令模式(CommandPattern)

    在软件系统中,“行为请求者”与“行为实现者”通常呈现一种...[GOF《设计模式》]Command模式结构图如下:图1Command模式结构图Command模式将一个请求封装为一个对象,从而使你可以使用不同的请求对客户进行参数化。

    通过c++11改进我们的模式之改进命令模式

    我要讲的是如何使用c++11改进命令模式,感兴趣的朋友可以看下

    openwrt命令行模式命令及其工具putty.rar

    openwrt命令行模式命令及其工具 需要学会用ssh登录路由器用linux命令查看。 ps 命令查看当前系统运行的进程信息 free 命令查看内存使用和swap挂载情况 ls 查看目录和文件 cd 进入退出目录 vi 查看编辑配置文件 ...

    C#设计模式_设计模式_C#_

    命令模式(Command Pattern) 15. 迭代器模式(Iterator Pattern) 16. 观察者模式(Observer Pattern) 17. 解释器模式(Interpreter Pattern) 18. 中介者模式(Mediator Pattern) 19. 职责链模式(Chain of ...

    Java24种设计模式,Java24种设计模式,24种设计模式,学会了这24种设计模式,可以打遍天下无敌手,设计模式非常重要

    12、命令模式COMMAND PATTERN 13、装饰模式DECORATOR PATTERN 14、迭代器模式ITERATOR PATTERN 15、组合模式COMPOSITE PATTERN 16、观察者模式OBSERVER PATTERN 17、责任链模式 18、访问者模式VISITOR PATTERN ...

    Java23种设计模式

    1.3.2 命令模式 40 1.3.3 解释器模式 43 1.3.4 迭代器模式 45 1.3.5 中介者模式 49 1.3.6 备忘录模式 52 1.3.7 观察者模式 54 1.3.8 状态模式 58 1.3.9 策略模式 61 1.3.10 模板方法 63 1.3.11 访问者模式 65

    设计模式_源代码大全.zip

    命令模式 20.职责链模式 21.中介者模式 22.享元模式 23.解释器模式 24.访问者模式 ... 相关资料:https://download.csdn.net/download/djk8888/11189309 和 https://download.csdn.net/download/djk8888/11189072

    C#设计模式(23种设计模式)

    命令模式(Command Pattern) 15. 迭代器模式(Iterator Pattern) 行为型: 16. 观察者模式(Observer Pattern) 17. 解释器模式(Interpreter Pattern) 18. 中介者模式(Mediator Pattern) 19. 职责链模式...

    Java设计模式-图解-附代码

    1.3.2 命令模式 40 1.3.3 解释器模式 43 1.3.4 迭代器模式 45 1.3.5 中介者模式 49 1.3.6 备忘录模式 52 1.3.7 观察者模式 54 1.3.8 状态模式 58 1.3.9 策略模式 61 1.3.10 模板方法 63 1.3.11 访问者模式 65

    《java的23种设计模式》

    1.3.2 命令模式 40 1.3.3 解释器模式 43 1.3.4 迭代器模式 45 1.3.5 中介者模式 49 1.3.6 备忘录模式 52 1.3.7 观察者模式 54 1.3.8 状态模式 58 1.3.9 策略模式 61 1.3.10 模板方法 63 1.3.11 访问者模式 65

    设计模式PPT.rar

    22第二十二讲备忘录模式 23第二十三讲状态模式 24第二十四讲命令模式 25第二十五讲访问者模式 26第二十六讲开放封闭原则 27第二十七讲单一职责原则 28第二十八讲里氏代换原则 29第二十九讲依赖倒转原则 30第三十讲...

    设计模式所有实验及实验报告及代码.zip

    28命令模式 29责任链模式 30状态模式 31观察者模式 32中介者模式 33迭代器模式 34访问者模式 35备忘录模式 36解释器模式 37UMLet的使用与类图的设计 38创建型模式应用实验 39结构型模式应用实验 40行为型模式应用...

    C#设计模式.PDF

    七、 在什么情况下应当使用命令模式 177 八、 使用命令模式的优点和缺点 178 设计模式(19)-Observer Pattern 178 一、 观察者(Observer)模式 178 二、 观察者模式的结构 179 三、 观察者模式的示意性源代码 180...

    深入浅出java设计模式(高清中文PDF)

    命令模式 14.解释器模式 15.迭代器模式 16.调停者模式 17.备忘录模式 18.观察者模式 19.策略模式 20.状态模式 21.模板模式 22.访问者模式 最后,还附带一个关于“分派”的章节!为了读者对访问者模式有更...

    JAVA的23种设计模式实例

    1.3.2 命令模式 40 1.3.3 解释器模式 43 1.3.4 迭代器模式 45 1.3.5 中介者模式 49 1.3.6 备忘录模式 52 1.3.7 观察者模式 54 1.3.8 状态模式 58 1.3.9 策略模式 61 1.3.10 模板方法 63 1.3.11 访问者模式 65

Global site tag (gtag.js) - Google Analytics