我正在研究使用State
模式將我的代碼中的大switch
語句轉換爲更易於管理的塊。我可以得到關於國家行爲模式的一些說明嗎?
我一直在閱讀關於它的Design Patterns book,並且還在看教程點示例here。
該示例中的代碼對我來說看起來不對,因爲作者從Context
以外調用State
功能。那是對的嗎?
這是我的理解,它應該是狀態的包裝的上下文,並且State
更改應該最有可能從每個State
對象中處理。否則,它有點擊敗了目的?
在谷歌上搜索,試圖找到設計模式一書State
模式如下圖:
我遇到this example,這正符合我的想法更多。 所以,我正確地認爲教程點示例不正確,並且State
應該由狀態自己更改,或者Object
通過調用context.request()
來保存Context
?
有沒有像在教程點示例中那樣做的有效案例?我無法親自看到它,如果你這樣做,你只會以另一個switch
或if
聲明結束。