命令模式:將“請求”封裝成對象,以便使用不同的請求、隊列或者日志來參數化其他對象。
命令模式也支持可撤銷的操作。
實例解析:
已知一個遙控器有七個可編程的插槽(每個都可以指定到一個不同的家電裝置),每個插槽都有對應的開關按鈕。這個遙控器還具備一個整體的撤銷按鈕。
現多家產商開發出一組Java類,這些類可以控制家電的自動化,例如電燈、風扇、熱水器、音響設備和其他類似的可控制裝置。
請創建一組控制遙控器的API,讓每個插槽都能夠控制一個或一組裝置。請注意,要能夠控制目前的裝置和任何未來可能出現的裝置,這一點很重要。
實例解析:
已知一個遙控器有七個可編程的插槽(每個都可以指定到一個不同的家電裝置),每個插槽都有對應的開關按鈕。這個遙控器還具備一個整體的撤銷按鈕。
現多家產商開發出一組Java類,這些類可以控制家電的自動化,例如電燈、風扇、熱水器、音響設備和其他類似的可控制裝置。
請創建一組控制遙控器的API,讓每個插槽都能夠控制一個或一組裝置。請注意,要能夠控制目前的裝置和任何未來可能出現的裝置,這一點很重要。
設計類圖如下:
抽象圖
設計類圖(全)
在本例中為了更好的說明命令模式,代碼將分為兩部分放在兩個包中。
package simple :只是說明了一個開燈的裝置。簡單代碼
package complex :說明全部的裝置。復雜代碼