設計模式 13)狀態模式

2022-06-05 12:48:08 字數 972 閱讀 3899

abstract class state

class forenoonstate : state

點,working", w.hour));

}else

}}class noonstate : state

點,sleep", w.hour));

}else

}}class afternoonstate : state

點,working", w.hour));

}else

}}class eveningstate : state

else

", w.hour));

}else}}

}class reststate : state

", w.hour));

}}class sleepstate :state

", w.hour));

}}class work

set

}bool _finish = false;

public bool taskfinished

set

}/// /// 當前狀態

///

state _current;

public void setstate(state st)

public work()

/// /// 執行狀態對應的方法

///

public void writeprogram()

}// 業務**:

work w = new work();

w.hour = 22;

w.writeprogram();

抽象狀態類定義每個狀態需要實現的方法,然後繼承抽象狀態類的狀態類都實現該方法;

定義乙個 context 類關聯當前狀態、設定當前狀態、執行狀態對應方法的方法。

java設計模式(13) 狀態模式

剛看到狀態模式的時候,第一眼的感覺就是覺得和策略模式很相似。都是在有很多情況下的時候,通過介面,類的設計,取代if.else和switch.case 語句。但從字面上就可以看出狀態是事物的內部乙個狀態,策略是外部已知的策略。舉個例子,比如乙個合同,可能有三種狀態 未開始,審核中,已完成。這三種狀態,...

設計模式 狀態模式

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

設計模式 狀態模式

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