命令(Command)模式就是对命令的封装,也就是把一个请求或操作封装到一个对象中。
命令模式示意性代码如下:
/**
* 抽象命令接口
* @author Administrator
*
*/
public interface Command {
void execute();
}
抽象命令接口角色规定了具体命令接口必须实现的接口。即一个执行方法(execute)
/**
* 具体命令类
* @author Administrator
*
*/
public class ConcreteCommand implements Command{
private Receiver receiver; //命令接收者
public ConcreteCommand(Receiver receiver) {
this.receiver=receiver;
}
@Override
public void execute() {
receiver.action();
}
}
具体命令类实现了抽象命令角色(Command)所规定的接口,即一个execute方法.在这个类中有一个接收者类(Receiver),Recerver类是命令的接收者。在命令的控制下执行命令(也就是执行action方法)。
/**
* 接收者类(命令的接收者)
* @author Administrator
*
*/
public class Receiver {
public void action(){
System.out.println("actions has been taken");
}
}
现在需要一个类来负责调用命令对象执行请求。所以定义一个请求者类
/**
* 请求者类
*
* @author Administrator
*
*/
public class Invoker {
private Command command;
public Invoker(Command command) {
this.command = command;
}
public void action() {
command.execute(); // 调用命令对象执行请求
}
}
Invoker构造函数接收一个Command类型的参数,并提供了一个action方法,这个方法调用了Command对象中的execute方法执行此命令对象.
至此,命令模式所需要的类都定义完成了,现在定义一个客户端类测试一下
public class Client {
public static void main(String[] args) {
Receiver receiver=new Receiver();
Command command=new ConcreteCommand(receiver);
Invoker invoker=new Invoker(command);
invoker.action();
}
}
上面是命令模式的最最简单的实现。
分享到:
相关推荐
在`CommandPattern.zip`文件中,可能包含了这个模式的示例代码,你可以进一步查看和学习这些代码,以便更好地理解和应用命令模式。记住,虽然这是一个简单的实现,但命令模式的威力在于其能够适应复杂的需求,例如在...
在提供的代码示例中,我们可以看到一个简单的命令链模式的实现: 1. **定义抽象处理者(IRunAction接口)**: ```php interface IRunAction { static function LoadActions(); function runAction($action, $...
### 深入浅出设计模式之命令模式 #### 前言 设计模式作为软件工程中的重要组成部分,为开发者提供了解决常见问题的有效途径。...通过学习和应用命令模式,我们可以更高效地解决问题,提高代码质量和可读性。
2. **不适用于简单操作**:如果一个操作过于简单,使用命令模式可能会显得过度设计。 **案例分析** 在提供的资源中,"计算器"可能是使用Command模式的一个实例。每个运算(加法、减法等)可以看作一个具体的命令,...
此外,标签中的“源码”可能意味着在学习命令模式时,查看相关的开源项目源码是非常有益的。这可以帮助理解在实际应用中如何巧妙地运用命令模式。而“工具”可能指的是命令模式在开发工具或框架中的应用,如IDE中的...
总结起来,这个项目通过C++实现了命令模式,提供了一个简单的电灯开关的例子,其中`Light`是接收者,`LightCommand`是具体命令,`Switch`是调用者。`Makefile`确保了代码的编译和执行流程的便捷性。通过学习这个项目...
分布式命令模式类库及Demo是IT领域中一种用于构建分布式系统的重要工具,它结合了设计模式与实际可操作的代码库,旨在简化跨网络的命令执行。在这个项目中,我们看到一个类库被设计用来支持分布式命令的执行,同时...
通过学习和理解这些代码,你可以更好地掌握如何在实际项目中应用命令模式。 总的来说,命令模式是一种强大的设计模式,它能够提高代码的灵活性和可维护性,是软件设计中不可或缺的一部分。无论是在简单的工具开发...
这里我们聚焦于C#语言中的设计模式学习笔记,涵盖了多种经典的设计模式,如合成模式、桥梁模式、装饰模式、享元模式、门面模式、命令模式、工厂方法、策略模式、代理模式以及状态模式。下面将对这些模式逐一进行详细...
【描述】"简单集成的效果示例"暗示了在JBPM4的web设计器中,通过命令模式实现的功能集成能够直观地展示出其优势。这可能包括了简化流程编辑、保存和撤销操作,以及与其他系统(如数据库或工作流引擎)的无缝连接。博...
本文将基于"sell"命令的基本学习,详细讲解shell部分命令的使用,这是一份非常有价值的shell学习资源。我们将深入探讨九个核心主题,每个主题对应压缩包中的一个PDF文档,这些文档将帮助你提升对Shell的掌握。 1. *...
- Vi编辑器有三种基本模式:命令模式、插入模式和底行模式。 - **命令模式**:启动vi时默认进入此模式。 - **插入模式**:通过`i`, `I`, `a`, `A`, `o`, `O`, `r`, `R`, `s`, `S`, `cw`, `cc`, `C`, `S`, `cc`, `...
### FTP命令解析与应用 #### 一、简介 ...对于新手而言,理解这些基础命令是非常重要的第一步,而进一步深入学习则可以解锁更多高级特性,提高工作效率。希望本文能够帮助到正在学习FTP命令的各位新手朋友们。
【思科网络工程师简单命令手册】是一本专为网络工程师准备的实用参考资料,主要涵盖了在配置和管理思科网络设备时常用的命令。手册的核心内容旨在帮助工程师们快速理解和执行基本的网络操作,以提高工作效率。这包括...
在“设计模式学习之Command模式”的资料中,可能涵盖了Command模式的原理、应用场景、优缺点以及如何在实际编程中实现Command模式等内容。通过学习这部分资料,开发者能够更好地理解和运用这一设计模式,提高代码的...
它有两种模式:命令模式和插入模式。 1. **启动与退出** - 启动VI:在终端输入`vi filename`打开或创建文件。 - 退出VI:在命令模式下,输入`:q`退出(如果未保存修改,会提示无法退出);`:wq`保存并退出;`:q!`...
- 命令模式:将请求封装为一个对象,以便使用不同的请求、队列请求或参数化请求。 - 解释器模式:为语言的语法提供文法表示,并提供解释程序。 - 迭代器模式:提供一种顺序访问聚合对象元素的方法,而不暴露其...
培养学生掌握简单工厂模式、工厂方法模式、单例模式、原型模式、桥接模式、适配器模式、装饰模式、代理模式、命令模式、观察者模式等常用设计模式的设计思想,并掌握在实际软件工程领域中的运用,能够把所学的原理...
本次分享的主题“图片里放文字(命令模式)”,提供了一种在命令提示符环境下为图片添加文字的独特方法,这对于爱好计算机操作、图像编辑或希望在不借助图形用户界面的情况下进行简单图像处理的用户来说,无疑是一条...
《ANSYS命令流学习详解》 ANSYS是一款强大的有限元分析软件,其命令流学习是提升效率的关键。本文将深入探讨ANSYS的基本使用、有限元法的基本构架以及ANSYS的架构与命令,帮助读者快速掌握ANSYS命令流的学习。 ...