狀態模式
《設計模式其實很簡單》筆記
①定義:
當乙個物件的內在狀態改變時允許改變其行為,這個物件看起來像是改變了其類。
//抽象的狀態類
public abstract calss state
//具體狀態a
public class concretestatea extends state
//覆蓋父類的抽象方法
@override
public void handle(context context)
}//具體狀態b
public class concretestateb extends state
//覆蓋父類的抽象方法
@override
public void handle(context context)
}//context類
public class context
//設定狀態
public void setstate(state state)
public void request()
}//客戶端
public static void main(string args)
③好處:
將與特定狀態相關的行為進行區域性化,並且將不同狀態的行為進行分割。也就是將特定的與狀態相關的行為都放進乙個物件中,由於所有與狀態有關的**都存在於某個具體的狀態類中,所以通過定義新的具體狀態類就可以很容易地增加新的狀態和轉換。
④適用的情況:
當乙個物件的行為取決於它的狀態並且它必須在執行時刻根據狀態來改變自己的行為時
當乙個操作中含有大量的多分支的條件語句,並且這些分支都依賴於該物件的狀態時
設計模式 16 狀態模式
狀態模式 當乙個物件的內在狀態改變時允許改變其行為,這個物件看起來像是改變了其類。解決的問題 當控制乙個物件狀態轉換的條件表示式過於複雜,把狀態的判斷邏輯轉移到表示不同狀態的一系列類中,把複雜的判斷邏輯簡單化。state 抽象狀態類,定義介面以封裝與context乙個特定狀態相關的行為 concer...
16 設計模式 狀態模式
乙個物件想內部狀態類改變時,允許改變其行為。就是把乙個物件的狀態改到一系列狀態類中,在狀態類中控制條件判斷 狀態改變。1 將狀態的行為都封裝都狀態類中,不同的狀態不同的類。2 狀態轉化條件在狀態類中,不會出現狀態隨意變換的問題。3 可拓展性性強。狀態的越多,類越多 1 上下文 維護當前狀態。2 抽象...
16 設計模式之狀態模式
對有狀態的物件,把複雜的 邏輯判斷 提取到不同的狀態物件中,允許狀態物件在其內部狀態發生改變時改變其行為。狀態模式包含以下主要角色。抽象狀態角色 state 定義乙個介面,用以封裝環境物件中的特定狀態所對應的行為。具體狀態角色 concrete state 實現抽象狀態所對應的行為。電梯執行系統,電...