命令模式(Command),將一個請求封裝為一個對象,從而使你可用不同的請求對客戶進行參數化;對請求排隊或記錄請求日志,以及支持可撤銷的操作。
主方法
public class main {
public static void main(String[] args) {
Receiver r = new Receiver();
Command c = new CommandImpl(r);
Invoker i = new Invoker();
i.setCommand(c);
i.executeCommand();
}
}
抽象類
/**
* 用來聲明操作的接口
*/
public abstract class Command {
protected Receiver receiver;
public Command(Receiver receiver) {
this.receiver = receiver;
}
abstract public void execute();
}
實現類
/**
* 講一個接受者對象綁定一個動作,調用接受者相應操作,以實現execute
*/
public class CommandImpl extends Command {
public CommandImpl(Receiver receiver) {
super(receiver);
}
public void execute() {
receiver.action();
}
}
執行命令的類,Invoker相當于管理請求的類,將請求排隊或者記錄請求日志,撤銷等
/**
* 要求該命令執行這個請求
*/
public class Invoker {
private Command command;
public void setCommand(Command command) {
this.command = command;
}
public void executeCommand() {
command.execute();
}
}
執行操作的類
/**
* 知道如何實施與執行一個與請求相關的操作,任何類都可能作為一個接受者
*/
public class Receiver {
public void action() {
System.out.println("執行請求!");
}
}