行为模式:Command 命令模式
目录

命令模式将“请求”封装成对象,以便使用不同的请求、队列或者日志来参数化其它对象。 命令模式也支持可撤销的操作。

命令模式把不同请求的方法调用(method invocation)封装成统一的命令接口(Command)。 通过命令接口将“动作的请求者”从“动作的执行者”对象中解偶。

public interface Command {
public void execute();
}

public ConcreteCommand implements Command {
public void execute() {
....
}
}

Client是Command的创建者,Receiver是Command的最终执行者。 Client和Receiver之间再通过Invkoer来从Client接受并调用Receiver执行。

Client --(Command)--> Invoker --(Command)--> Receiver

Invoker用于存储Command对象,控制Command的激活,就像一个控制器控制Command的执行和撤销。

对于撤销的支持,只需在Command里再加入一个函数:

public interface Command {
public void execute();
public void undo();
}

命令模式在日志请求、线程池、工作队列中用的很多。

发表评论