狀態模式可以使物件狀態發生改變時,體現不同的行為。
用一句話來表述,狀態模式把所研究的物件的行為包裝在不同的狀態物件裡,每乙個狀態物件都屬於乙個抽象狀態類的乙個子類。
可以舉例說明,**如下:
類scene中包含乙個狀態字段,對應乙個抽象的狀態物件。有2個狀態物件tiger和lion繼承它,並定義了各自不同的行為。行為執行時,由於發生多型,狀態物件改變時,行為也發生了改變。//抽象狀態類
abstract class animal
//狀態類
class tiger extends animal
}//狀態類
class lion extends animal
}class scene
//執行行為
public void act()
}public class demo1
}
程式輸出結果如下:
a tiger is running
a lion is running
用繼承表達行為間的差異,用字段表達狀態上的變化。上例中tiger與lion分別通過繼承實現了不同的行為,而scene中通過欄位的重新賦值實現了狀態的改變,最終得到我們想要的效果。
設計模式 狀態模式
狀態模式 當乙個物件的內在狀態改變時允許改變其行為,這個物件看起來像是改變了其類。狀態模式主要解決的是當控制乙個物件狀態轉換的條件表示式過於複雜時的情況,把狀態的判斷邏輯轉移到表示不同狀態的一些列類當中,可以把複雜的判斷邏輯簡化。當乙個物件的行為取決於它的狀態,並且它必須在執行時刻根據狀態改變它的行...
設計模式 狀態模式
1.概述 當乙個物件的內在狀態改變時允許改變其行為,這個物件看起來像是改變了其類。2.解決的問題 主要解決的是當控制乙個物件狀態轉換的條件表示式過於複雜時的情況。把狀態的判斷邏輯轉移到表示不同的一系列類當中,可以把複雜的邏輯判斷簡單化。3.模式中的角色 3.1 上下文環境 context 它定義了客...
設計模式 狀態模式
描述 允許物件在內部狀態改變時改變它的行為,物件看起來好像修改了它的類。主要解決的是當控制乙個物件狀態轉換的條件表示式過於複雜時的情況。把狀態的判斷邏輯轉移到表示不同的一系列類當中,可以把複雜的邏輯判斷簡單化。通常應用在有好多狀態的流程中。類圖 以下程式模擬糖果機器投幣取糖果的狀態流程。1.定義狀態...