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