第十七篇 設計模式--命令模式

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

代碼:

package command_model;

/**
 * @author naivor
 *		命令模式-場景類
 */
public class CommandModel {
	public static void main(String[] args) {
		Receiver receiver=new Receiver();
		Command command=new ConcreteCommand(receiver);
		Invoker invoker=new Invoker();
		
		invoker.SetCommand(command);
		invoker.ExecuteCommand();
		
	}
}
/**
 * 
 * @author naivor
 *		命令模式-命令抽象類
 */
abstract class Command{
	protected Receiver receiver;
	
	public Command() {
		
	}
	public Command(Receiver receiver) {
		this.receiver=receiver;
	}
	
	public abstract void execute();
}
/**
 * 
 * @author naivor
 *		命令模式-具體命令類
 */
class ConcreteCommand extends Command{

	public ConcreteCommand(Receiver receiver) {
		super(receiver);
	}

	@Override
	public void execute() {
		receiver.action();
	}
}

/**
 * 
 * @author naivor
 *		命令模式-接收者類
 */
class Receiver{
	public void action(){
		//業務邏輯
	}
}
/**
 * 
 * @author naivor
 *		命令模式-命令管理類
 */
class Invoker{
	private Command command;
	
	public void SetCommand(Command command){
		this.command=command;
	}
	
	public void ExecuteCommand(){		//還可以擴展出 "撤銷/恢復"等功能
		command.execute();
	}
}


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章