`
raymond.chen
  • 浏览: 1436937 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论

命令模式(Command Pattern)

 
阅读更多

命令模式本质是对命令的封装,从而把发出命令的责任和执行命令的责任分割开了,委派给不同的对象。

 

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

 

Command模式的几个要点:
      1、Command模式的根本目的在于将“行为请求者”与“行为实现者”解耦,在面向对象语言中,常见的实现手段是“将行为抽象为对象”。
      2、实现Command接口的具体命令对象ConcreteCommand 有时候根据需要可能会保存一些额外的状态信息。
      3、通过使用Composite模式,可以将多个“命名”封装为一个“复合命令”MacroCommand。

 

优点:
      1、很容易构造一个命令队列
      2、记录相关的命令日志
      3、增加命令的状态,实现命令的撤销和重做
      4、允许接受请求的一方决定是否可做
      5、新的命令轻而易举可以加入其中

      6、支持宏命令

 

缺点:
      可能会有过多的具体命令类存在



 
命令接口:

public interface Command {
	public void execute();
}

 

命令实现类:

/**
 * 不同的命令对应到不同的接收者
 */
public class ConcreteCommand implements Command{
	private Receiver receiver;
	
	public ConcreteCommand(Receiver receiver){
		this.receiver = receiver;
	}
	
	public void execute() {
		receiver.action();
	}
}

 

接收者:

public class Receiver {
	public void action(){
		System.out.println("接收者处理请求!");
	}
}

 

调用者:

/**
 * 可以调用任何命令
 */
public class Invoke {
	private Command command;
	
	public Invoke(Command command){
		this.command = command;
	}
	
	public void doAction(){
		command.execute();
	}
}

 

测试代码:

/**
 * 命令和接收者可以根据需要灵活调整
 */
public class Test {
	public static void main(String[] args) {
		Receiver receiver = new Receiver();
		ConcreteCommand command = new ConcreteCommand(receiver);
		Invoke invoke = new Invoke(command);
		invoke.doAction();
	}
}

  

  • 大小: 27 KB
0
0
分享到:
评论

相关推荐

    命令模式command pattern

    命令模式(Command Pattern)是一种行为设计模式,它将请求封装为一个对象,使得你可以使用不同的请求、队列请求,或者支持可撤销的操作。在Java中实现命令模式,我们可以利用面向对象编程的特性来构建系统,使得...

    命令模式 Command Pattern

    ### 命令模式(Command Pattern) #### 概述 命令模式是一种行为设计模式,它将请求封装成对象,以便使用不同的请求对客户端进行参数化。该模式有助于将发送请求的对象与执行请求的对象解耦。 #### 核心概念 在...

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

    命令模式是一种行为设计模式,它将请求封装成独立的对象,使得可以使用不同的请求、队列请求、记录请求历史以及支持可撤销的操作。这种模式在软件工程中被广泛应用,尤其是在需要解耦请求发起者和接收者时,提高了...

    c++-设计模式之命令模式(Command Pattern)

    命令模式(Command Pattern)是一种行为型设计模式,它将请求封装为对象,从而使您可以使用不同的请求、队列请求或日志请求,并支持可撤销操作。命令模式通常用于实现操作的解耦,使得发送者和接收者之间不直接关联...

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

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

    命令模式(Command Pattern).rar

    用最简单的例子理解命令模式(Command Pattern) 命令模式的需求源自想通过一个指令(比如这里IControl的Execute方法)来控制多个类的多个方法,包含了几个要素: 1、命令:让类的各种方法抽象成类实现一个接口 2、...

    Head First 设计模式 (六) 命令模式(Command pattern) C++实现

    通过命令模式,我们可以轻松地添加新的命令,只需创建新的具体命令类并实现`Command`接口即可。此外,由于命令对象存储了接收者,所以可以很容易地在不同上下文中重用命令,甚至可以在命令执行后撤销操作(通过保存...

    CommandPattern)管理智能家电最终代码共4页.pdf.zip

    总结来说,"CommandPattern)管理智能家电最终代码共4页.pdf.zip"提供的示例应该展示了如何利用命令模式来管理和控制智能家电系统,包括命令的创建、执行、撤销以及如何将这些概念融入到实际的软件设计中。...

    C#命令模式(Command Pattern)实例教程

    命令模式是一种设计模式,它将请求封装为一个对象,使得我们可以使用不同的请求、队列请求、或者记录请求日志,也可以支持可撤销的操作。在C#中,命令模式的应用可以帮助我们更好地解耦系统中的调用者和接收者,提高...

    CommandPattern)管理智能家电最终代码共4页

    **命令模式(Command Pattern)详解** 命令模式是一种行为设计模式,它将请求封装为一个对象,使得你可以使用不同的请求、队列或者日志请求,也可以支持可撤销的操作。在这个场景中,我们关注的是如何利用命令模式...

    command 模式的c++实现

    **命令模式(Command Pattern)详解** 命令模式是一种行为设计模式,它将请求封装为一个对象,使得你可以使用不同的请求、队列或者日志请求,也可以支持可撤销的操作。在C++中实现命令模式,可以有效地解耦调用者和...

    C++设计模式课件23_Command_命令模式.pdf

    **命令模式(Command Pattern)**是一种行为型设计模式,它将请求封装成对象,从而使你能够用不同的请求对客户端进行参数化;对请求排队或记录请求日志,以及支持可撤销的操作。在命令模式中,请求是以命令的形式...

    [行为型模式]命令模式的理解

    命令模式是一种行为设计模式,它将请求封装为一个对象,从而使你可用不同的请求对客户进行参数化,对请求排队或记录请求日志,以及支持可撤销的操作。在软件工程中,这种模式常用于解耦发出命令的对象(调用者)与...

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

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

    C#命令模式模型

    在提供的文件列表中,`Program.cs`通常是主程序入口,`TestPatternCommand.csproj`是项目文件,`CommandPattern`可能是包含命令模式相关类的文件夹,`Properties`包含了项目的配置信息,而`TestPatternCommand.sln`...

    C#版 24种设计模式

    工厂方法模式(Factory Method Pattern) 观察者模式(Observer Pattern) 建造者模式(Builder Pattern) 解释器模式(Interpreter Pattern) 命令模式(Command Pattern) 模板方法模式(Template Method Pattern) 桥接模式...

    C#命令模式应用

    - `CommandPattern` 文件夹:可能包含了命令模式相关的类,如Command接口、ConcreteCommand类等。 - `Properties` 文件夹:存储项目的属性配置,如AssemblyInfo.cs,用于定义元数据。 在实际应用中,C#命令模式可能...

    命令模式(Command Pattern).pdf

    在命令模式中,调用者(Invoker)不再直接调用接收者(Receiver)的方法,而是通过一个命令对象(Command)作为中介。命令对象封装了对接收者的操作,实现了请求的接口。这样,当需要执行一个新的操作时,只需要创建...

    命令模式最简单实现

    在`CommandPattern.zip`文件中,可能包含了这个模式的示例代码,你可以进一步查看和学习这些代码,以便更好地理解和应用命令模式。记住,虽然这是一个简单的实现,但命令模式的威力在于其能够适应复杂的需求,例如在...

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

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

Global site tag (gtag.js) - Google Analytics