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