命令模式是一种对象行为型模式,它主要解决的问题:在软件构建过程中,行为发起者与行为实现者之间的紧耦全的问题。它将一个发起者请求封装成一个对象,对请求排队或记录请求日志,以及支持可撤销的操作,将发起者和执行者分开来,通过命令的方式来实现。
命令模式包含了了3类对象。
1. 请求发起者Invoker:调用命令对象执行这个请求
2. 请求执行者Receiver:知道如何实施与执行一个请求相关的操作,任何类都可能作为一个接收者。
3. 命令MyCommand: 先声明执行操作的接口Command,并可以根据该接口有多个实现,如MyCommand,在实现类中将一个接收者对象绑定于一个动作;调用接收者相应的操作,以实现命令角色声明的执行操作的接口。
package command;
/**
* 命令接口
* @author lenovo
*
*/
public interface Command {
public void execute();
}
package command;
/**
* 点菜命令
* @author lenovo
*
*/
public class OrderCaiCommand implements Command {
private CookerReceiver receiver;
public OrderCaiCommand(CookerReceiver receiver){
this.receiver = receiver;
}
public void execute() {
// TODO Auto-generated method stub
receiver.shaocai();
}
}
package command;
/**
* 需要米饭命令
* @author lenovo
*
*/
public class OrderFanCommand implements Command {
private CookerReceiver receiver;
public OrderFanCommand(CookerReceiver receiver){
this.receiver = receiver;
}
public void execute() {
// TODO Auto-generated method stub
receiver.jufan();
}
}
package command;
/**
* 需要汤命令
* @author lenovo
*
*/
public class OrderTangCommand implements Command {
private CookerReceiver receiver;
public OrderTangCommand(CookerReceiver receiver){
this.receiver = receiver;
}
public void execute() {
// TODO Auto-generated method stub
receiver.hetang();
}
}
package command;
import java.util.ArrayList;
import java.util.List;
/**
*服务员记录下这些命令,通知厨师
* @author lenovo
*
*/
public class Waiter {
List<Command> listCommand = new ArrayList<Command>();
public void addOrder(Command command){
listCommand.add(command);
}
public void cancelOrder(Command command){
listCommand.remove(command);
}
public void notifyCooker(){
for(int i=0;i<listCommand.size();i++){
Command command = listCommand.get(i);
command.execute();
}
}
}
package command;
public class customTest {
/**
* 客户叫菜,叫汤,叫米饭,服务员通知厨师开始做
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
CookerReceiver receiver = new CookerReceiver();
Command command1 = new OrderCaiCommand(receiver);
Command command2 = new OrderFanCommand(receiver);
Command command3 = new OrderTangCommand(receiver);
Waiter waiter = new Waiter();
waiter.addOrder(command1);
waiter.addOrder(command2);
waiter.addOrder(command3);
waiter.notifyCooker();
waiter.cancelOrder(command2);//取消做饭命令
waiter.notifyCooker();
}
}
- 大小: 14.4 KB
分享到:
相关推荐
命令模式Command将请求封装成对象,以便使用不同的请求、队列、或者日志来参数化其他对象。命令模式也支持可撤销的操作。
用java实现命令模式。展现命令模式类与类之间的继承,依赖关系。
命令模式(Command Pattern)是一种数据驱动的设计模式,它属于行为型模式。请求以命令的形式包裹在对象中,并传给调用对象。调用对象寻找可以处理该命令的合适的对象,并把该命令传给相应的对象,该对象执行命令。
Command设计模式ppt 代码示例 设计模式 Command ppt 代码实例 撤销重做实例
设计模式C++学习之命令模式(Command)
命令模式 Command: 将一个请求封装为一个对象,从而使你可用不得请求对客户进行参数化;对请求排队或记录请求日志,以及支持可撤销的操作.命令模式作用:1.他能较容易地设计一个命令队列2.在需要的情况下可以较容易的将...
命令模式(Command) 用意:把一个请求封装到一个对象中,把发出命令和执行命令的责任分开,委派给不同的对象实现。
C#面向对象设计模式纵横谈(15):(行为型模式) Command 命令模式
将一个请求封装为一个对象,从而使你可用不同的请求对客户进行参数化;对请求排队或记录请求日志,以及支持可取消的操作。
命令模式
有关设计模式里边的命令模式,内含ppt、源代码及结果、word整理。在此以供大家学习交流。
命令模式 Command 设计模式 若理解有问题,还请大S指教。
Head First 设计模式 (六) 命令模式(Command pattern) C++实现
12、命令模式COMMAND PATTERN 13、装饰模式DECORATOR PATTERN 14、迭代器模式ITERATOR PATTERN 15、组合模式COMPOSITE PATTERN 16、观察者模式OBSERVER PATTERN 17、责任链模式 18、访问者模式VISITOR PATTERN ...
命令模式是一种行为设计模式,它将一个请求封装成一个对象,从而允许用户根据不同的请求对客户进行参数化;同时,它也支持撤销操作。 命令模式的核心在于通过命令对象实现调用操作和实现操作的解耦。这种模式通常...
观察者模式 Observer:Swing中的事件模型 工厂模式 Factory:在JDK中遍地都是,比如JDBC、JNDI等,是学习Spring的基础 命令模式 Command:Struts框架的基石 单例模式 Singleton:最简单的设计模式,大量...
C++设计模式代码资源23_Command_命令模式.zip
命令模式 command mode 复制 剪切 Ex mode 退出 保存 vim (如果系统只有vi没有 vim 是少装了一个系统安装包)">Linux基础学习笔记 对于初学者很有帮助 gedit打开图形编辑器 vi 模式切换:编辑模式 insert mode...
1、命令模式 Command (人,开关,电灯) 2、策略模式 Strategy (用户选择各种排序方法进行排序) 3、简单工厂 Simple Factory (很多的产品,由一个工厂出产) 4、抽象工厂 Abstract Factory (很多的产品,分别由不同...
命令模式的示例代码和文档,学习命令模式的参考资料。