定義:將一個請求封裝成一個對象,從而讓你使用不同的請求把客戶端參數化,對請求排隊或者記錄請求日誌,可
以提供命令的撤銷和恢復功能。
package command;
public class Receiver {
public void doSomething(){
System.out.println("接收者執行業務邏輯處理");
}
}
package command;
public interface Command {
void execute();
}
package command;
public class ConcreteCommand implements Command {
Receiver receiver;
public ConcreteCommand(Receiver receiver) {
this.receiver=receiver;
}
@Override
public void execute() {
// TODO Auto-generated method stub
receiver.doSomething();
}
}
package command;
public class Invoker {
private Command command;
public void setCommand(Command command) {
this.command = command;
}
public void action(){
this.command.execute();
}
}
package command;
public class Client {
public static void main(String[] args){
Receiver receiver = new Receiver();
Command command = new ConcreteCommand(receiver);
//客戶端直接執行具體命令方式
command.execute();
//客戶端通過調用者來執行命令
Invoker invoker = new Invoker();
invoker.setCommand(command);
invoker.action();
}
}
命令模式優缺點:
命令模式適用場景:
該不該引入設計模式: