12 狀態模式

2021-09-02 04:03:49 字數 806 閱讀 6615

狀態模式:把相關的行為區域性化,將不同的狀態行為分割開來,例如根據每小時判斷一些情況(context類),這樣可以定義乙個介面,並傳入這個情況(傳入context類),可以把不同的條件分別實現這個介面,並分別根據這個傳入的情況判斷(此模式適合判斷條件複雜情況)

* 狀態模式

* 關鍵

* context類(擁有一些判斷屬性),擁有state的引用,

* 執行判斷方法時呼叫state介面並傳入自身作為引數

* @author zbl

public class statecustomer elseelse{

concretestatec());

//業務類

class context{

private state state;

private double hour;//小時(例子)

public context(){

state = new concretestatea();//初始化時是狀態a

public double gethour() {

return hour;

public void sethour(double hour) {

this.hour = hour;

public state getstate() {

return state;

public void setstate(state state) {

this.state = state;

public void work(){

state.handler(this);//傳入本身情況

設計模式 狀態模式

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

設計模式 狀態模式

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

設計模式 狀態模式

描述 允許物件在內部狀態改變時改變它的行為,物件看起來好像修改了它的類。主要解決的是當控制乙個物件狀態轉換的條件表示式過於複雜時的情況。把狀態的判斷邏輯轉移到表示不同的一系列類當中,可以把複雜的邏輯判斷簡單化。通常應用在有好多狀態的流程中。類圖 以下程式模擬糖果機器投幣取糖果的狀態流程。1.定義狀態...