學習設計模式 狀態模式

2021-07-29 16:27:10 字數 493 閱讀 1451

說明:(定義)當乙個物件的內在狀態改變時允許改變其行為,這個物件看起來像是改變了其類。該模式適用於那些複雜的條件不一樣,執行不一樣的場景,當然簡單的情況,直接用if/else處理就可以了。

需求:員工加班,不同的時間,寫程式的效率不一樣。

解決方式:

a.      定義乙個狀態抽象類並定義乙個處理方法;

b.      根據不同狀態,定義不同狀態具體類;

c.      定義乙個上下文類,提供狀態類的get/set方法,定義乙個狀態不同,執行不同狀態具體類方法的方法;

d.      客戶端例項化上下文類例項c,初始化乙個狀態具體類例項a,將例項aset給上下文例項c,執行c的changestate方法。

需求變更:領導說晚上21:00以後強制下班。

解決方式:

新增乙個狀態強制下班類

類圖:

設計模式學習 狀態模式

一般玩家角色會有很多狀態行為,並且多個狀態會在不同情況下進行轉換。一般狀態很少很簡單的化,可以利用switch 羅列狀態,類似於下面實現 for 但是這種方式會隨著狀態增加,耦合度不斷增加,不適應 後期修改。狀態模式就是就是單獨將狀態看成乙個個狀態類,每種狀態都是自己需要改變的資料和邏輯行為 pra...

設計模式學習筆記 狀態模式

定義 當乙個物件內在的狀態改變時,允許其改變行為,這個物件看起來像是改變了其類。狀態模式不太好理解,我現在還沒有完全理解,這個模式給我的第一印象就是比較亂,給我的感覺好像是兩個類互相依賴,呼叫 的方法,呼叫 的方法,弄的好亂,所以這個狀態模式就不用通用類圖去描述了,那樣會不知所云,還是舉乙個實際的例...

設計模式學習筆記 狀態模式

模式中的角色 state 抽象狀態角色 concretestate 具體狀態角色 context 環境角色 狀態模式通用類圖如下 具體的類圖如下 實現如下 package state2 context類,維護乙個concretestate子類的例項,這個例項定義當前的狀態。public class ...