狀態模式 行為型設計模式之三

2021-12-29 20:43:50 字數 696 閱讀 1846

一、命令

將乙個請求封裝為乙個物件,從而使你可用不同的請求對客戶進行引數化;對請求排隊或記錄請求日誌,以及支援可撤銷的操作。

命令模式聯絡生活,結合物件導向思想,最起碼應該有四個類,命令發出者,命令傳遞命令接收者,還有命令本身。

或許有的人會說,命令傳遞者有點多餘,多餘嗎?

為什麼要加命令傳遞者?命令傳遞者可不僅是用來傳遞命令哦!

先從生活中抽象出乙個例子:飯店服務員就好是模式中的命令傳遞者。

試想,飯店裡沒有服務員會怎麼樣?

顧客要跟廚師直接下訂單。不論是菜做好了還是某一樣菜沒有,廚師都得找到具體顧客,乙個顧客可以,顧客多了怎麼辦?廚師記得清楚嗎?恐怕他自己做菜都忙不過來,那還記得是誰點的菜!到這還沒有完,顧客要修改訂單,想換菜,廚師這下頭大了,是哪桌的菜啊,哪桌要換啊,哪桌先來的啊,哪個桌的菜沒有了呀……

飯店服務員的任務是什麼?

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...