設計模式專欄
當乙個物件的內在狀態發生改變時允許改變其行為,這個物件看起來改變了其類
狀態模式中行為是由狀態決定的,不同的狀態有不同的行為,狀態模式的意圖是讓乙個物件在其內部狀態改變的時候,其行為也隨之改變。
乙個物件是有狀態的
這個物件在不同的狀態時,行為不一樣
狀態可以切換
context:環境類,定義客戶興趣的介面,維護了乙個state子類的例項,這個例項定義了物件的當前狀態
state:抽象狀態類或者狀態介面,定義乙個或者一組介面,表示該狀態下的行為
concretestatea、concretestateb:具體狀態類,每乙個具體的狀態類實現state中定義的介面,從而實現達到不同狀態的不同行為。
/**
* 使用者行為
*/public inte***ce userstate
/**
* 登入狀態行為
*/public class loginstate implements userstate
@override
public void forward()
}
/**
* 登出狀態行為
*/public class logoutstate implements userstate
@override
public void forward()
}
狀態持有
public class logincontext implements userstate
public void setstate(userstate state)else
mstate=state;
}@override
public void commont()
@override
public void forward()
}
public class test
}
執行結果:
切換登出狀態
**成功!
切換登出狀態
不能**,沒有登入,跳到登入頁面
設計模式 狀態模式
狀態模式 當乙個物件的內在狀態改變時允許改變其行為,這個物件看起來像是改變了其類。狀態模式主要解決的是當控制乙個物件狀態轉換的條件表示式過於複雜時的情況,把狀態的判斷邏輯轉移到表示不同狀態的一些列類當中,可以把複雜的判斷邏輯簡化。當乙個物件的行為取決於它的狀態,並且它必須在執行時刻根據狀態改變它的行...
設計模式 狀態模式
1.概述 當乙個物件的內在狀態改變時允許改變其行為,這個物件看起來像是改變了其類。2.解決的問題 主要解決的是當控制乙個物件狀態轉換的條件表示式過於複雜時的情況。把狀態的判斷邏輯轉移到表示不同的一系列類當中,可以把複雜的邏輯判斷簡單化。3.模式中的角色 3.1 上下文環境 context 它定義了客...
設計模式 狀態模式
描述 允許物件在內部狀態改變時改變它的行為,物件看起來好像修改了它的類。主要解決的是當控制乙個物件狀態轉換的條件表示式過於複雜時的情況。把狀態的判斷邏輯轉移到表示不同的一系列類當中,可以把複雜的邏輯判斷簡單化。通常應用在有好多狀態的流程中。類圖 以下程式模擬糖果機器投幣取糖果的狀態流程。1.定義狀態...