1.在環境類中會維持乙個對抽象狀態類物件的引用,並且有乙個改變狀態的方法setstate(),還應該有一些會引起狀態改變的資料,例如銀行系統的存錢、取錢方法,這是在環境類中定義的。
2.抽象狀態類,這裡面定義了一些在某種狀態下需要的操作handle(),如銀行系統在某個狀態下存錢、取錢。可以肯定一定要有狀態檢查方法statecheck(),該方法是狀態轉換的關鍵,會呼叫環境類中的setstate()方法,所以應該在其中維持乙個對環境類的引用。
3.具體狀態類,就是根據具體處於的狀態定義具體的方法,要注意在會引起狀態轉換的方法中一定要呼叫狀態檢查方法statecheck()。如在凍結狀態存錢足夠多就會轉換到正常狀態。
4.在有些情況下,多個環境物件可能需要共享同乙個狀態,那麼需要將這些狀態物件定義為環境類的靜態成員物件。
5.狀態模式對開閉原則支援不是很好,增加新的狀態類需要修改那些負責狀態轉換的源**,否則無法轉換到新增的狀態;而且修改某個狀態類的行為也需要修改對應類的源**。
GoF之狀態 State 模式
狀態模式,在gof中的解釋是 讓乙個物件的行為隨著內部狀態的改變而改變,而該物件也像換了類一樣 在unity3d的環境中,一次執行只能在乙個場景中執行,乙個場景負責乙個不同的功能,而狀態模式每次同樣也只能存在乙個在執行的狀態,所以設計遊戲的時候,我們 可以將乙個狀態和乙個遊戲場景進行繫結 場景之間的...
GOF23 設計模式 之狀態模式
狀態模式 就是事務有很多種狀態時需要應對的一種設計模式 場景有 1,銀行賬號狀態 2,酒店系統 3,多執行緒執行緒狀態 實現 1,狀態介面 package state public inte ce state2,狀態實現類 package state public class empty imple...
GOF之模板模式
動機 motivation 在軟體構建過程中,對於某一項任務,它常常有穩定的整體操作結構,但各個子步驟卻有很多改變的需求,或者由於固有的原因 比如框架與應用之間的關係 而無法和任務的整體結構同時實現。如何在確定穩定操作結構的前提下,來靈活應對各個子步驟的變化或者晚期實現需求?意圖 intent 定義...