策略模式 把易於變化的行為分別封裝起來,讓它們之間可以互相替換, 讓這些行為的變化獨立於擁有這些行為的客戶。
GoF《設計模式》中說道:定義一系列算法,把它們一個個封裝起來,並且使它們可以相互替換。該模式使得算法可獨立於它們的客戶變化。
Command命令模式是一種對象行為型模式,它主要解決的問題是:在軟件構建過程中,“行為請求者”與“行為實現者”通常呈現一種“緊耦合”的問題。
GoF《設計模式》中說道:將一個請求封裝為一個對象,從而使你可用不同的請求對客戶進行參數化;對請求排隊或記錄請求日志,以及支持可撤銷的操作。
從這點看:
策略模式是通過不同的算法做同一件事情:例如排序
而命令模式則是通過不同的命令做不同的事情,常含有(關聯)接收者。
目標不同!
命令模式是含有不同的命令(含有接收者的請求):做不同的事情;隱藏接收者執行細節。常見菜單事件,
而策略模式含有不同的算法,做相同的事情;
區別在於是否含有接收者。命令模式含有,策略模式不含有。命令模式中的命令可以單獨運行。
打個比喻就是:
命令模式等於菜單中的復制,移動,壓縮等,而策略模式是其中一個菜單的例如復制到不同算法實現。
