命令模式:將請求命令封裝成對象,管理並執行
命令是指一種指示某人做某事的方式,在程序上也十分常見,如:鍵盤按下會發出某某指令。
封裝成對象是指 封裝成類,類要具有命令參數 以及 執行方法,意味着在命令創建之時就已經決定好要幹什麼,以及交給誰做。
命令參數就是要幹什麼時需要的材料,執行方法就是執行者和具體的執行邏輯。
將命令封裝成一個命令類之後,還需要一個命令管理器。
命令管理器簡單來說就是管理命令的,可增加命令、刪除命令、執行所有命令等等事情。
例如:Command命令類 ,CommandManager命令管理類
Command有一堆參數, 還有執行方法Execute()
CommandManager有一個List<Command> list; 還有AddCommand(Command)方法 以及 Execute()方法。
在外部如下使用:
Command command = new CommandA(param)
CommandManager cm = new CommandManager();
cm.AddCommand(command);
cm.Execute();
命令模式多用於項目需要將業務流程延後調用 或 需要管理其執行順序時,就可以用命令模式來加以管理。
例如:任務隊列,任務隊列就是一個個命令,放進去隊列裏面,按優先級排序,然後執行隊頭的任務;而當某個已存在隊列的任務不需要執行時,也可以撤銷任務(從隊列移除任務)。
多數情況都是可能會發生在一些比較特殊的情況,例如在Unity同一幀當中引發了10多個業務邏輯(事件),其中有幾個業務邏輯是必須要控制好執行順序的,不然表現效果會變差,那麼此時就可以使用命令模式來去控制這個順序問題了。
命令模式在C#中是十分好用的,因爲有委託這個強大的助手,能把需要調用的方法保存入委託中,從而延後執行業務邏輯。