設計模式看的太快不利於消化,一方面是最近比較忙,另一方面是想讓自己多消化消化自己所看的東西。所以本週只看了一個Sate設計模式
State模式的意圖有2點:
1. 分散邏輯判斷和處理。
對於State來說,無非就是狀態的切換。說白了最終結果和switch/case差不多。對於少量的狀態判斷和邏輯處理,switch還行。但是對於一個較大的項目而且條件判斷比較複雜,這個時候switch不僅效率低下,而且無法控制。State模式巧妙的將邏輯判斷和處理放到狀態對象中,而不是把條件判斷和狀態切換放在Context上下文中,從而分散了邏輯判斷和處理。如果要更改邏輯,Context就不需要改動,只改動State類即可。
2. 去耦。我想這應該是Gof 設計模式的核心。
類圖如下:
State模式中,將條件判斷和狀態切換放在State的派生類中。這樣降低了Context邏輯判斷的複雜和依賴,降低了耦合度。
主要實現代碼:
輸出如下:
Hi, I am in the StateA
Hi, I am in the StateB
Hi, I am in the StateA