Command模式,一個傳說中非常簡單的模式,但是其應用還真不簡單。
通過接口將某些方法封裝起來以達到解除系統邏輯互聯關系的耦合的效果,并且實現了Command接口的類對象可以在系統中自由的重新組合,參數傳遞也非常方便,為系統帶來靈活性的提升。
其應用范圍包括數據庫的事務操作、設備控制、多線程核心以及GUI的do/undo操作。
ActiveObject模式是使用Command模式的應用之一,這是實現多線程控制的一種技術。
下面是一個簡單的實例:
1. 一個Command接口,定義了Execute方法。
2. 兩個類SleepingCommand和PrinterCommand實現了Command中的Execute方法。
???在PrinterCommand中調用Execute時打印一個字符并創建一個新的PrinterCommand在指定的延時后執行。
?? SleepingCommand表示一個睡眠中的Command,他在執行時只是簡單的將自己放到鏈表末尾直到等待的事件(設定的延時到來)發生它才會將自己喚醒等待下一步執行。
3. 一個StopCommand類,實現了用于終止Command鏈循環的Execute方法。
4. 一個ActiveObjectManager對象,維護了一個Command對象鏈表,用戶可以像Manager中AddCommand對象或者便利鏈表并依次調用Command對象的Execute方法執行任務。