设计模式笔记——Command
命令模式Command
将一个请求封装为一个对象,从而可用不同的请求对客户进行参数化;对请求排队或者记录请求日志以及支持可撤销的操作。

package comment.pattern;
public class CommandPattern {
public static void main(String[] args) {
Receiver receiver = new Receiver();
Command command = new ConcreteCommand(receiver);
Invoker invoker = new Invoker();
invoker.setCommand(command);
invoker.ExecuteCommand();
}
}
package comment.pattern;
public abstract class Command {
protected Receiver receiver;
public Command(Receiver receiver) {
this.receiver = receiver;
}
public abstract void Execute();
}
package comment.pattern;
public class ConcreteCommand extends Command {
public ConcreteCommand(Receiver receiver) {
super(receiver);
// TODO Auto-generated constructor stub
}
@Override
public void Execute() {
// TODO Auto-generated method stub
receiver.Action();
}
}
package comment.pattern;
public class Invoker {
private Command command;
public void setCommand(Command command) {
this.command = command;
}
public void ExecuteCommand() {
command.Execute();
}
}
package comment.pattern;
public class Receiver {
public void Action() {
// TODO Auto-generated method stub
System.out.println("Do request!");
}
}
——————————————————————————————————————————————————————————————————————
命令模式的优点
1.较容易的设计命令队列
2.在需要的情况下,较容易的将命令写入日志
3.允许被请求一方选择是否执行请求
4.可以容易的实现对请求的撤销和重做增加新的命令类较容易
5.将请求一个操作的对象和执行一个操作的对象分开
只有在真正需要撤销/恢复操作等功能的时候,把原来的代码重构为命令模式才有意义。
参考《大话设计模式》

浙公网安备 33010602011771号