每日設計模式 命令模式

2021-05-25 16:10:36 字數 806 閱讀 8645

命令模式,講乙個請求封裝為乙個物件,從而使你可用不同的請求對客戶進行引數化,對請求排隊或記錄請求日誌,以及支援可撤銷的操作。gof的設計模式裡關於其適用性太長了,簡單點說哈。這個模式可以容易的將命令計入日誌,並且允許接受請求的一方決定是否要否決請求,它可以容易的實現對請求的撤銷和重做,並且可以容易的加入新的命令。它可以在不同的時刻指定、排列和執行請求。

《大話設計模式》裡舉得例子是吃烤羊肉串,如果廚師直接和客戶互動的話,很有可能發生記錯,搞混、不先來後到等問題。如果廚師對客戶遮蔽,客戶把選單告訴服務員,然後由服務員將選單交給廚房處理,這樣不容易錯,而且還有食客對於點菜的記錄。客人還能根據實際情況修正自己的訂單,未來出了問題因為有日誌所以可以檢索,所以避免了各種夾雜不清。

古劍裡啊,我覺得戰鬥選擇技能的那個不就是命令模式的量身定做麼。首先,技能可以任選,而乙個人的技能是不固定的,也就是說很容易新增新的命令;接著是選擇了技能之後,覺得技能選的不好還可以撤銷;最後選的技能沒問題之後就可以執行了。當然,這裡沒有摻雜重做和日誌的功能,那是因為遊戲裡沒必要啊,遊戲裡的日誌不就是儲存的存檔麼~嗯,買東西的時候也可以撤銷,但那個不是命令模式。回頭研究一下那個應該是怎麼實現的。

**如下:

receiver.h 檔案

receiver.cpp 檔案

command.h 檔案

command.cpp 檔案

concretecommand.h 檔案

concretecommand.cpp 檔案

invoker.h 檔案

invoker.cpp 檔案

main.cpp 檔案

執行結果

每日設計模式 裝飾模式

裝飾模式動態的給乙個物件新增一些額外的職責,就增加功能來說,裝飾模式比生成子類更靈活。其適用性體現在不影響其他物件的情況下,以動態 透明的方式給單個物件新增職責。語出自gof 設計模式 大話設計模式 裡講到裝飾模式的方法就是非常簡單的對乙個人進行裝飾 穿衣服,那就可以把具體的人理解為乙個物件,衣服,...

每日設計模式 策略模式

策略模式,定義了演算法家族,分別封裝起來,讓它們之間可以互相替換,此模式讓演算法的變化不會影響到使用演算法的客戶。其適用性體現在,很多相關類僅僅是行為有異,可以使用策略模式用這n個行為中的乙個配置這個類 使用乙個演算法的不同變體,這個演算法的結果是相同的,區別在於時間或空間複雜度不同 演算法使用客戶...

每日設計模式 原型模式

原型模式的作用是用原型例項指定建立物件的種類,並且通過拷貝這些原型建立新的物件。大話設計模式 裡舉得例子是寫簡歷,乙份簡歷只要寫一次,剩下的通過轉殖就可以實現新簡歷的生成,而且可以修改新簡歷的資訊。舉的乙個例子我以為更合適,就比如你去配鑰匙,配鑰匙的店主只給你提供配鑰匙的服務,但是鑰匙是什麼樣的他並...