狀態模式的設計實現主要是用來解決,不同狀態下的不同使用者行為,一般情況下,我們的處理方式是,根據狀態不同,呼叫不同的方法,而狀態模式的解決辦法是,在某個物件當中持有乙個狀態物件的介面,當狀態條件不同時,執行不同的具體的介面實現方法。
這樣說可能還是比較抽象,舉個例子,乙個水桶,其狀態可以分為三種,一種是水桶滿的狀態,還有一種是半桶狀態,第三種是空桶狀態,對於不同的狀態下,我們能執行的操作也是不同的,比如在水桶非空狀態下的時候,我們是可以進行按壓的,而桶空的時候,是不可以進行按壓的。
我們先來看下狀態模式的整體結構
這個物件當中會持有乙個state型別的物件,會根據context當中狀態的變化而呼叫不同的state的實現類
抽象介面,這個介面定義了一些列的行為合集
具體的行為類,不同的狀態下,執行不同的行為邏輯
下面這個例子當中給出了關於水桶的實現方式
策略模式的孿生兄弟---狀態模式
還有一種使用場景就是工作流當中的審批流程,下面這個例子,是關於不同狀態的審批流程
狀態模式(state)
關於狀態模式,最主要的就是,不同狀態下,對應的是不同的類,而他們的執行方法名稱都是同乙個,不同的就是每個狀態實現類的執行邏輯,這個非常重要。
設計模式 狀態模式
狀態模式 當乙個物件的內在狀態改變時允許改變其行為,這個物件看起來像是改變了其類。狀態模式主要解決的是當控制乙個物件狀態轉換的條件表示式過於複雜時的情況,把狀態的判斷邏輯轉移到表示不同狀態的一些列類當中,可以把複雜的判斷邏輯簡化。當乙個物件的行為取決於它的狀態,並且它必須在執行時刻根據狀態改變它的行...
設計模式 狀態模式
1.概述 當乙個物件的內在狀態改變時允許改變其行為,這個物件看起來像是改變了其類。2.解決的問題 主要解決的是當控制乙個物件狀態轉換的條件表示式過於複雜時的情況。把狀態的判斷邏輯轉移到表示不同的一系列類當中,可以把複雜的邏輯判斷簡單化。3.模式中的角色 3.1 上下文環境 context 它定義了客...
設計模式 狀態模式
描述 允許物件在內部狀態改變時改變它的行為,物件看起來好像修改了它的類。主要解決的是當控制乙個物件狀態轉換的條件表示式過於複雜時的情況。把狀態的判斷邏輯轉移到表示不同的一系列類當中,可以把複雜的邏輯判斷簡單化。通常應用在有好多狀態的流程中。類圖 以下程式模擬糖果機器投幣取糖果的狀態流程。1.定義狀態...