设计模式笔记——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.将请求一个操作的对象和执行一个操作的对象分开

 

只有在真正需要撤销/恢复操作等功能的时候,把原来的代码重构为命令模式才有意义。


参考《大话设计模式》

————————————————————————————————————————————————————————————————————————————


posted @ 2012-08-15 17:53  Leeforall  阅读(155)  评论(0)    收藏  举报