命令模式把方法调用封装起来,通过封装方法调用,可以把运算快封装成形。
加载调用过程:
1:首先创建一个命令对象
2:使用setCommand()将对象存储在调用者中
3:客户可以使用命令对象执行命令。
示例:
//命令接口
public interface Command{
public void excute(){};
}
//命令类
public class LightOnCommand implements Command
{
Light light;
public LightOnCommand(Light light)
{
this.light=light;
}
public void excute()
{
light.on();
}
}
//使用命令对象
public class SimpleRemoteControl
{
Command slot;
public SimpleRemoteControl()
{
this.slot=slot;
}
public void setCommand(Command c)
{
slot=c;
}
public void ButtonWasPressed()
{
slot.excute();
}
}
命令模式讲请求封装成对象,以便使用不同的请求、队列或者日志来参数化成其它对象。命令模式也支持可撤销的操作。
在实现遥控器的时候,可以用Command数组来存放命令,执行命令的时候按照数组下标来进行调用就OK了
命令模式应用:队列请求
讲日程安排,线程池,工作队列等对象作为一个工作队列。从队列中取出一个对象,执行命令就删除掉该对象,这些对象需要有统一的调用方法。
命令模式应用:日志请求
将操作记录在日志中,设置两个方法(store() load())一个负责记录操作状态,另一个是载入日志中记录的工作状态。