command pattern
:將請求封裝成物件,這可以讓你使用不同的請求,佇列,或者是日誌請求來引數化其他物件,命令模式也可以支援撤銷操作。
命令模式有兩種實現方式:
1.在命令管理器中提供設定當前命令接受者的方法,當執行訊息或者是有訊息壓入的時候直接將命令傳送給當前設定的接受者。
2.在命令管理器中建立乙個命令接收器佇列,通過註冊和登出的方式動態增減,而每個接收器會接受到命令,但是只需要針對自己關心的命令進行處理即可。
第一種方式比較簡單,忽略,重點完成第『二種方式的測試;
然後適用下面的測試**:
執行結果為:
1: executecommand
light::lightoncmd!
door::dooroncmd!
light::lightoffcmd!
door::dooroffcmd!
2: executecommand
light::lightbrokencmd
light::unknowncmd!
door::doorbrokencmd!
從輸出結果可以看出實現了簡單的命令傳送和執行雙方的解耦,我們可以隨時增減命令的接受者而不需要對原來已經編碼好的模組或者類進行修改,這樣就具有了很強的擴充套件性和可維護性,另外在程式裡面我們將訊息處理的返回做了乙個擴充套件,返回三個值,其中新增的乙個返回是「終止」,就是告訴命令管理器,這個命令是我的專屬命令,已經執行完了,不需要再下發給其他的接受者了,他們根本不需要。這樣提高了效率。
在遊戲開發中,命令系統和訊息系統是很常見的,實現的方法差不多。
設計模式之命令設計模式
先來看一下命令模式的類圖 乍一看好像類很多,其實我們逐個分析他們。類圖中存在的類可以分為 invoker icommand conceretecommand receiver invoker類 上層直接調取invoker類 icommand 是對命令的抽象 conceretecommand 是命令的...
設計模式之命令模式
command pattern 將請求封裝成物件,這可以讓你使用不同的請求,佇列,或者是日誌請求來引數化其他物件,命令模式也可以支援撤銷操作。命令模式有兩種實現方式 1.在命令管理器中提供設定當前命令接受者的方法,當執行訊息或者是有訊息壓入的時候直接將命令傳送給當前設定的接受者。2.在命令管理器中建...
設計模式之命令模式
當我們有一台多功能的印表機,然後通過電腦直接進行任務,如圖 如果通過這樣的設計直接去呼叫多功能一體機的功能,就會存在此時此刻只能進行乙個任務,不允許有多個客戶端同時操作.那麼現在我們就需要考慮一種新的設計模式,叫做命令設計模式。命令設計模式 將乙個請求封裝為乙個物件,從而使你可用不同的請求對客戶進行...