爲一個開關設計程序,這個開關有N按鈕,同時對應N個插槽,要求能夠接入任何電器廠商的API,從而能夠控制任何電器。目前只有電燈和電視兩種電器,要求寫一個Demo程序,按鈕1能夠打開電燈。按鈕2能夠打開電視而且切換到上一次打開的頻道。打開電視換頻道須要打開機頂盒而且對機頂盒切換頻道。設計
每一個廠商的API不一致,且每一個電器的打開流程都不同,咱們須要將這些差別封裝起來,才能夠實現新增電器時不須要修改開關程序。對象
上面的例子主要經過Command模式將執運算塊(幾個對象和一組動做)打包變成一個統一的excute方法。Comand除了能夠實現excute,還能夠實現undo(撤銷),只須要爲每一個命令實現undo方法,就能夠實現撤銷的動做。Command模式的一個常見的應用就是任務池,咱們能夠自定義不少任務,而後封裝成command對象,交給任務池逐個執行。blog