一、命令
將乙個請求封裝為乙個物件,從而使你可用不同的請求對客戶進行引數化;對請求排隊或記錄請求日誌,以及支援可撤銷的操作。
命令模式聯絡生活,結合物件導向思想,最起碼應該有四個類,命令發出者,命令傳遞命令接收者,還有命令本身。
或許有的人會說,命令傳遞者有點多餘,多餘嗎?
為什麼要加命令傳遞者?命令傳遞者可不僅是用來傳遞命令哦!
先從生活中抽象出乙個例子:飯店服務員就好是模式中的命令傳遞者。
試想,飯店裡沒有服務員會怎麼樣?
顧客要跟廚師直接下訂單。不論是菜做好了還是某一樣菜沒有,廚師都得找到具體顧客,乙個顧客可以,顧客多了怎麼辦?廚師記得清楚嗎?恐怕他自己做菜都忙不過來,那還記得是誰點的菜!到這還沒有完,顧客要修改訂單,想換菜,廚師這下頭大了,是哪桌的菜啊,哪桌要換啊,哪桌先來的啊,哪個桌的菜沒有了呀……
飯店服務員的任務是什麼?
1、整理顧客的訂單——增加,刪除,修改。由於顧客或者飯店原因可能有事需要對訂單進行修改,刪除,這都是服務員任務。
2、記錄訂單的順序
3、把整理好的訂單傳給廚師。
這樣,他只需要按照服務員給他的訂單先後做菜就ok了,其間有什麼變化,也是服務員來管理訂單。要是沒有那樣菜,他也只需通過服務員傳遞給顧客,及時調換。
看來命令模式中,命令傳遞者是必不可少了。
剩下命令發出者,接受者,都各司其職,系統就運轉起來了。
二、類圖
設計模式 行為型 狀態模式
設計模式行為型 1.觀察者模式 2.模板模式 3.策略模式 4.職責鏈模式 5.狀態模式 6.迭代器模式 7.訪問者模式 8.備忘錄模式 9.命令模式 10.直譯器模式 11.中介模式 對有狀態的物件,把複雜的 判斷邏輯 提取到不同的狀態物件中,允許狀態物件在其內部狀態發生改變時改變其行為。環境類 ...
Java設計模式 行為型 狀態模式
身為億億萬萬勞苦大眾的一員,每天可以做的基本上就兩件事,一件就是太累休息一會,另一件就是為了養家拼命的工作。什麼情況下應當休息,什麼情況下應當工作。答案很簡單,要看上班還是下班了。千千萬的勞苦大眾 public class person 應當休息還是工作,看下現在的狀態 public void re...
設計模式之狀態模式 行為型
乙個物件在其內部狀態改變時改變其行為,這個物件我們可以稱為狀態物件,所以狀態模式是一種物件行為型模式。上下文類 public class context public void setstate state state public state getstate 抽象狀態類 public abstr...