20命令模式

命令模式

<設計模式其實很簡單>筆記


①定義:

將一個請求封裝爲一個對象,從而使用戶可用不同的請求對客戶進行參數化。對請求排隊或記錄請求日誌,並支持可撤銷的操作。


②代碼:
//抽象命令
public abstract class Command{
	protected Receiver receiver;
	//構造函數
	public Command(Receiver receiver){
		this.receiver = receiver;
	}
	//抽象的執行命令方法
	abstract public void Execute();
}
//具體命令
public void class ConcreteCommand extends Command{
	public ConcreteCommand(Receiver receiver){
		super(receiver);
	}
	//覆蓋執行方法
	//執行命令方法
	@Override
	public void Execute(){
		receiver.Action();
	}
}
//命令傳達類
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("execute the request");
	}
}
//客戶端
public static void main(String[] args){
	Receiver receiver = new Receiver();
	Command command = new ConcreteCommand(receiver);
	Invoker invoker = new Invoker();
	invoker.setCommand(command);
	invoker.ExecuteCommand();
}
//命令模式本質就是對命令進行封裝,並且將發出命令的責任和執行命令的責任分割開。不過每個命令都要有一個類


③適用的地方:
當需要抽象出待執行的動作以便參數化某個對象時。
當需要在不同的時刻執行、排列一級執行請求時。
當系統需要支持取消操作時。
當系統需要記錄、修改日誌時
④優點:
降低了系統的耦合度
新的命令可以很容易地加入到當前系統中
可以比較容易地設計一個命令隊列和組合命令。
可以方便地實現對請求的撤銷和重做。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章