優點:① 將與特定狀態相關的行為區域性化,並且將不同狀態的行為分割開。
缺點:① 可能出現大量狀態類。
適用範圍:
當乙個物件的行為取決於他的狀態,而且他必須在執行時刻根據狀態改變他的行為,就要考慮此模式。
乙個操作中含有龐大的分支機構,並且這些分支決定於物件的狀態。
客戶端:
work work = new work();//初始化給work狀態賦值
work.sethour(9); //給work時間賦值
work.writeprogram(); //判斷現狀
work.sethour(19); //給work時間賦值
work.setfinsh(true); //打斷的事件,工作完成即可下班,不必再繼續加班
work.writeprogram(); //判斷現狀
一句話概括:
根據不同的工作時間,自動切換顯示不同的狀態,如上午精神,下午疲憊等
/*** state (狀態是抽象類)
* forenoonstate noonstate afternoonstate eveningstate reststate sleepstate -- 基本按時間段順序固定排序
** work (設定開始狀態、設定時間、進入序列判斷顯示現狀等方法)**/
設計模式 狀態模式
狀態模式 當乙個物件的內在狀態改變時允許改變其行為,這個物件看起來像是改變了其類。狀態模式主要解決的是當控制乙個物件狀態轉換的條件表示式過於複雜時的情況,把狀態的判斷邏輯轉移到表示不同狀態的一些列類當中,可以把複雜的判斷邏輯簡化。當乙個物件的行為取決於它的狀態,並且它必須在執行時刻根據狀態改變它的行...
設計模式 狀態模式
1.概述 當乙個物件的內在狀態改變時允許改變其行為,這個物件看起來像是改變了其類。2.解決的問題 主要解決的是當控制乙個物件狀態轉換的條件表示式過於複雜時的情況。把狀態的判斷邏輯轉移到表示不同的一系列類當中,可以把複雜的邏輯判斷簡單化。3.模式中的角色 3.1 上下文環境 context 它定義了客...
設計模式 狀態模式
描述 允許物件在內部狀態改變時改變它的行為,物件看起來好像修改了它的類。主要解決的是當控制乙個物件狀態轉換的條件表示式過於複雜時的情況。把狀態的判斷邏輯轉移到表示不同的一系列類當中,可以把複雜的邏輯判斷簡單化。通常應用在有好多狀態的流程中。類圖 以下程式模擬糖果機器投幣取糖果的狀態流程。1.定義狀態...