定义:
将一个请求封装为一个对象,从而使你可用不同的请求对客户进行参数化;
对请求排队或记录请求日志,以及支持可撤销操作。
适用性:
1.抽象出待执行的动作一参数化某对象。
2.在不同的时刻指定、排列和执行请求。
3.支持取消操作。
4.支持修改日志,这样当系统崩溃是,这些修改可以被重做一遍。
5.用构建在原语操作上的高层操作构造一个系统。
类图:
代码:
package designPatterns;
class Receiver{
public void receive(){
System.out.println("This is Receiver Class");
}
}
abstract class Command{
protected Receiver receiver;
public Command(Receiver receiver){
this.receiver= receiver;
}
public abstract void execute();
}
class CommandImpl extends Command{
public CommandImpl(Receiver receiver){
super(receiver);
}
public void execute(){
receiver.receive();
}
}
class Invoker{
private Command command;
public void setCommand(Command command){
this.command=command;
}
public void execute(){
command.execute();
}
}
public class CommandTest {
public static void main(String[] args) {
Receiver rec = new Receiver();
Command cmd = new CommandImpl(rec);
Invoker i = new Invoker();
i.setCommand(cmd);
i.execute();
}
}
结果:
This is Receiver Class