`

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 备忘录模式 - ...

    Cisco路由器配置命令之模式转换命令.pdf

    Cisco 路由器配置命令之模式转换命令 Cisco 路由器配置命令是路由器配置的基础,了解这些命令可以帮助网络管理员更好地配置和管理路由器。在本文中,我们将讨论 Cisco 路由器配置命令之模式转换命令。 一、用户...

    23种GoF设计模式Java版.pdf

    **17 命令模式** - 将一个请求封装为一个对象,从而使用户可用不同的请求对客户进行参数化;对请求排队或记录请求日志,以及支持可撤销的操作。 **18 状态模式** - 允许对象在其内部状态改变时改变它的行为。对象看...

    java设计模式

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

    Oracle归档模式命令

    ### Oracle归档模式命令详解 #### 一、Oracle归档模式简介 在Oracle数据库中,归档模式(Archivelog Mode)是一种重要的操作模式,它允许数据库管理员将已提交的数据更改记录保存到独立的归档日志文件中,即使当前...

    MA5800操作命令参考

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

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

    命令模式是一种设计模式,它的主要目的是将请求封装为对象,以实现请求的发起者与执行者之间的解耦,同时支持请求的排队、撤销和重做。在C++中,传统命令模式的实现可能会导致大量的命令类,这在大型项目中会引发类...

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

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

    23种设计模式(17)java命令模式

    java命令模式详解 在软件设计中,命令模式是一种非常重要的行为类模式,它将一个请求封装成一个对象,从而让你使用不同的请求把客户端参数化,对请求排队或者记录请求日志,可以提供命令的撤销和恢复功能。下面我们...

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

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

    cisco基本配置命令

    在进入特权模式后,需要使用命令`configure terminal`进入全局配置模式。在这个模式下,可以对设备进行基本配置。 3. 交换机命名 使用命令`hostname`可以对交换机命名。例如,命名为aptech2950。 4. 配置使能口令...

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

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

    OLT配置命令手册

    - **用户ONU模板的端口VLAN模式配置**:使用命令“onu-template port vlan mode”配置端口VLAN模式。 #### 六、交换控制卡管理 这部分内容主要介绍了如何管理和配置OLT设备中的交换控制卡。 1. **风暴抑制** - *...

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

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

    【Java设计模式】《设计模式之禅》中的23种设计模式.zip

    9. 命令模式 10. 责任链模式 11. 装饰模式 12. 策略模式 13. 适配器模式 14. 迭代器模式 15. 组合模式 16. 观察者模式 17. 门面模式 18. 备忘录模式 19. 访问者模式 20. 状态模式 21. 解释器模式 22. 享元模式 23. ...

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

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

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

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

    思科交换机常用命令

    1. 用户模式管理员通过超级终端或者 telnet 方式登陆交换机后,首先会进入用户模式,这里的尖括号代表用户模式,此模式下只能使用一些简单的查看命令,无法对设备进行配置。 用户模式是交换机的初始模式,管理员...

    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

    SD卡SPI模式中文资料

    总之,SD卡SPI模式下的数据传输涉及了复杂的命令集和时序控制,但其简单易用的特点使得它在嵌入式系统设计中占据了一席之地。理解并掌握这些基础知识,将有助于开发者更好地利用SD卡的功能,为各种应用场景提供高效...

Global site tag (gtag.js) - Google Analytics