java設計模式(13) 狀態模式

2021-09-11 19:40:53 字數 1067 閱讀 6294

剛看到狀態模式的時候,第一眼的感覺就是覺得和策略模式很相似。都是在有很多情況下的時候,通過介面,類的設計,取代if...else和switch...case 語句。

但從字面上就可以看出狀態是事物的內部乙個狀態,策略是外部已知的策略。舉個例子,比如乙個合同,可能有三種狀態:未開始,審核中,已完成。這三種狀態,是合同這個物件內部的狀態,如果後續增加了狀態,也是合同內部新增即可。外部人員在呼叫的是,就是進行狀態的切換。

合同狀態

public inte***ce contractstatus
具體的合同狀態

public class unstartcontractstatus implements contractstatus

}

public class doingcontractstatus implements contractstatus

}

public class hasdonecontractstatus implements contractstatus

}

上下文,對合同狀態進行切換

public class contractcontext 

// 切換合同狀態為:已處理

public void hasdone()

// 切換合同狀態為:未開始

public void unstart()

public void getcontractstatus()

}

客戶端操作:

public static void main(string args)
注意到,這裡的狀態模式與策略模式,乙個很大的區別就是這裡的客戶端操作,在進行切換的時候,是contractcontext的乙個內部操作。而策略模式的客戶端在呼叫時,需要知道每個策略的區別,自己來指定相應的策略實現。

設計模式 13)狀態模式

abstract class state class forenoonstate state 點,working w.hour else class noonstate state 點,sleep w.hour else class afternoonstate state 點,working w....

Java設計模式 狀態模式

目錄 定義如下 個人理解 通用類圖 角色介紹 state 抽象狀態角色 concretestate 具體狀態角色 context 環境角色 通用源 場景類 狀態模式的優點 狀態模式的缺點 使用場景 狀態模式又是乙個比較難的設計模式 當乙個物件內在狀態改變時允許其改變行為,這個物件看起來像改變了其類。...

設計模式 狀態模式 Java

狀態模式 state 當乙個物件的內在狀態改變時允許改變其行為。這個物件看上去就像是改變了它的類一樣。狀態模式主要解決的是當控制乙個物件狀態轉換的條件表示式過於複雜時的情況。把狀態的判斷邏輯轉移到表示不同狀態的一系列類當中,可以把複雜的判斷邏輯簡化。狀態模式的好處 將與特定狀態相關的行為區域性化,並...