看完大話設計模式後,個人總結 命令模式的出發點就是: 在類a中func_a1函數中,寫了調用類b中func_b1 和func_2等幾個方法的幾條語句。然後出現需求,需要對調用類b方法的幾個調用過程 進行排序 或者進行組合,或者撤回等操作, 最簡單的操作 就是重寫func_a中的方法,滿足需求。同樣的 ...
看完大話設計模式後,個人總結 命令模式的出發點就是: 在類a中func_a1函數中,寫了調用類b中func_b1 和func_2等幾個方法的幾條語句。然後出現需求,需要對調用類b方法的幾個調用過程 進行排序 或者進行組合,或者撤回等操作, 最簡單的操作 就是重寫func_a中的方法,滿足需求。同樣的,其他對調用操作的控制需求 ,都會要去修改這個func_a,所以這樣就違背了設計模式的 開放封閉的原則。並且代碼量大的時候 並不方便拓展。
解決方法:
類b不變;
新建一個類 order基類, 並且派生出具體的子類, 每個子類分別調用類b的func_x方法實現命令。 這樣子就吧order類抽象出來了;
新建一個類orderManager類, 專門用來對order類進行管理和控制, 以後的什麼排序啊 測繪等控制需求 都可以寫在這裡面。
類a的func_a1 方法修改, 根據需生成對應的order類對象, 並實例化一個ordermanager類實例,將他們組裝好。 然後調用 直接調用ordermanger類的方法進行命令的調用!