大戰設計模式 14 狀態模式

2021-09-07 15:33:52 字數 647 閱讀 6611

設計模式使用的例子

允許物件在內部狀態改變時改變它的行為,物件看起來好像修改了它的類。

context(環境類):定義客戶感興趣的介面。維護乙個concretestate子類的例項,這個例項定義當前狀態;

讓狀態的變化有序,且保證在新增狀態或者行為的情況下不會出現有遺漏的情況

封裝寄語狀態的行為,並將行為委託到當前的狀態

狀態過多會導致類的數量過多

乙個事物有多個狀態,切狀態之間存在互相轉變的關係的時候可以使用

需要講事物的行為進行封裝,不是暴露在方法中被看見,而是在狀態內部實現的時候

有多個行為會導致事物狀態改變的時候

1、狀態模式主要是為了處理多個狀態變化的情況。

當我們遇到多個狀態之間互相變化的時候,如果狀態過多我們經常會遺漏從一種狀態變化成另一種狀態的情況。

狀態模式通過介面的特性從而避免了這樣的情況發生。

2、事物的所有行為都在每個狀態中存在,從而狀態本生只需要考慮當前狀態所發生的變化和變化的結果。

在例子中,簡單的說,不使用狀態模式的時候,我們是面向行為去程式設計,而是用狀態模式的時候,我們是面向狀態去程式設計。

3、狀態模式的實現不一定要使用介面,也可以使用抽象類,但是要明確的是,當你有些需要預設行為改變的時候才去使用。

大戰設計模式 14 狀態模式

設計模式使用的例子 允許物件在內部狀態改變時改變它的行為,物件看起來好像修改了它的類。context 環境類 定義客戶感興趣的介面。維護乙個concretestate子類的例項,這個例項定義當前狀態 讓狀態的變化有序,且保證在新增狀態或者行為的情況下不會出現有遺漏的情況 封裝寄語狀態的行為,並將行為...

設計模式 狀態模式

狀態模式 當乙個物件的內在狀態改變時允許改變其行為,這個物件看起來像是改變了其類。狀態模式主要解決的是當控制乙個物件狀態轉換的條件表示式過於複雜時的情況,把狀態的判斷邏輯轉移到表示不同狀態的一些列類當中,可以把複雜的判斷邏輯簡化。當乙個物件的行為取決於它的狀態,並且它必須在執行時刻根據狀態改變它的行...

設計模式 狀態模式

1.概述 當乙個物件的內在狀態改變時允許改變其行為,這個物件看起來像是改變了其類。2.解決的問題 主要解決的是當控制乙個物件狀態轉換的條件表示式過於複雜時的情況。把狀態的判斷邏輯轉移到表示不同的一系列類當中,可以把複雜的邏輯判斷簡單化。3.模式中的角色 3.1 上下文環境 context 它定義了客...