命令模式:將“請求”封裝成對象,以便使用不同的請求宅荤、隊列或者日志來參數(shù)化其他對象。
命令模式也支持可撤銷的操作。
實例解析:
已知一個遙控器有七個可編程的插槽(每個都可以指定到一個不同的家電裝置)捌刮,每個插槽都有對應(yīng)的開關(guān)按鈕如庭。這個遙控器還具備一個整體的撤銷按鈕叹卷。
現(xiàn)多家產(chǎn)商開發(fā)出一組Java類,這些類可以控制家電的自動化坪它,例如電燈骤竹、風扇、熱水器往毡、音響設(shè)備和其他類似的可控制裝置蒙揣。
請創(chuàng)建一組控制遙控器的API,讓每個插槽都能夠控制一個或一組裝置开瞭。請注意懒震,要能夠控制目前的裝置和任何未來可能出現(xiàn)的裝置,這一點很重要嗤详。
實例解析:
已知一個遙控器有七個可編程的插槽(每個都可以指定到一個不同的家電裝置)个扰,每個插槽都有對應(yīng)的開關(guān)按鈕。這個遙控器還具備一個整體的撤銷按鈕断楷。
現(xiàn)多家產(chǎn)商開發(fā)出一組Java類锨匆,這些類可以控制家電的自動化,例如電燈冬筒、風扇恐锣、熱水器、音響設(shè)備和其他類似的可控制裝置舞痰。
請創(chuàng)建一組控制遙控器的API土榴,讓每個插槽都能夠控制一個或一組裝置。請注意响牛,要能夠控制目前的裝置和任何未來可能出現(xiàn)的裝置玷禽,這一點很重要。
設(shè)計類圖如下:
在本例中為了更好的說明命令模式呀打,代碼將分為兩部分放在兩個包中矢赁。
package simple :只是說明了一個開燈的裝置。簡單代碼
package complex :說明全部的裝置贬丛。復(fù)雜代碼