1. 程式人生 > >【轉】策略模式與命令模式區別

【轉】策略模式與命令模式區別

區別 相同 策略模式 菜單 nbsp 之間 mman 變化 排隊

策略模式 把易於變化的行為分別封裝起來,讓它們之間可以互相替換, 讓這些行為的變化獨立於擁有這些行為的客戶。
GoF《設計模式》中說道:定義一系列算法,把它們一個個封裝起來,並且使它們可以相互替換。該模式使得算法可獨立於它們的客戶變化

Command命令模式是一種對象行為型模式,它主要解決的問題是:在軟件構建過程中,“行為請求者”與“行為實現者”通常呈現一種“緊耦合”的問題。
GoF《設計模式》中說道:將一個請求封裝為一個對象,從而使你可用不同的請求對客戶進行參數化;對請求排隊或記錄請求日誌,以及支持可撤銷的操作

從這點看:

策略模式是通過不同的算法做同一件事情:例如排序

而命令模式則是通過不同的命令做不同的事情,常含有(關聯)接收者

目標不同!

命令模式是含有不同的命令(含有接收者的請求):做不同的事情;隱藏接收者執行細節。常見菜單事件,

而策略模式含有不同的算法,做相同的事情;

區別在於是否含有接收者。命令模式含有,策略模式不含有。命令模式中的命令可以單獨運行。

打個比喻就是:

命令模式等於菜單中的復制,移動,壓縮等,而策略模式是其中一個菜單的例如復制到不同算法實現。

【轉】策略模式與命令模式區別