大B:“Command模式通常可應用到以下場景:1、Multi-levelundo(多級undo操作)如果系統需要實現多級回退操作,這時如果所有使用者的操作都以mand物件的形式實現,系統可以簡單地用stack來儲存最近執行的命令,如果使用者需要執行undo操作,系統只需簡單地popup一個最近的mand物件然後執行它的undo()方法既可。2、Transactionalbehavior(原子事務行為)藉助mand模式,可以簡單地實現一個具有原子事務的行為。當一個事務失敗時,往往需要回退到執行前的狀態,可以藉助mand物件儲存這種狀態,簡單地處理回退操作。3、Progressbars(狀態條)假如系統需要按順序執行一系列的命令操作,如果每個mand物件都提供一個getEstimatedDuration()方法,那麼系統可以簡單地評估執行狀態並顯示出合適的狀態條。4、Wizards(導航)通常一個使用多個wizard頁面來共同完成一個簡單動作。一個自然的方法是使用一個mand物件來封裝wizard過程,該mand物件在第一個wizard頁面顯示時被建立,每個wizard頁面接收使用者輸入並設定到該mand物件中,當最後一個wizard頁面使用者按下‘Finish’按鈕時,可以簡單地觸發一個事件呼叫execute()方法執行整個動作。透過這種方法,mand類不包含任何跟使用者介面有關的程式碼,可以分離使用者介面與具體的處理邏輯。5、GUIbuttonsandmenuitems(GUI按鈕與選單條等等)Swing系統裡,使用者可以透過工具條按鈕,選單按鈕執行命令,可以用mand物件來封裝命令的執行。6、Threadpools(執行緒池)通常一個典型的執行緒池實現類可能有一個名為addTask()的public方法,用來新增一項工作任務到任務佇列中。該任務佇列中的所有任務可以用mand物件來封裝,通常這些mand物件會實現一個通用的介面比如java.lang.Runnable。7、Macrorecording(巨集紀錄)可以用mand物件來封裝使用者的一個操作,這樣系統可以簡單透過佇列儲存一系列的mand物件的狀態就可以記錄使用者的連續操作。這樣透過執行佇列中的mand物件,就可以完成‘Playback’操作了。8、Networking透過網路傳送mand命令到其他機器上執行。9、ParallelProcessing(併發處理)當一個呼叫共享某個資源並被多個執行緒併發處理時。”