設計模式 狀態模式公司請假

2021-10-05 21:51:38 字數 1500 閱讀 8411

工作流中的請假流程

某人提出請假申請,先由專案經理審批,如果專案經理不同意,審批就直接結束

如專案經理同意,再看是否超過3天,如果三天以內,審批直接結束

否則,交給部門經理,部門經理審核後,無論是否同意,審批直接結束。

狀態模式特點

1.根據狀態來分離和選擇行為。

2.狀態模式是狀態驅動,由上下文負責。

狀態模式主要解決的是當控制乙個物件狀態轉換的條件表示式過於複雜時的情況,把狀態的判斷邏輯轉移到表示不同狀態的一系列類當中,可以把複雜的判斷邏輯簡化。

就像例題當中,判斷請假的狀態條件不止乙個,先是由專案經歷判斷是否請假,然後再判斷請假的時長是否大於三天,由此可以判斷乙個物件狀態轉換的條件表示式過於發雜,可以採用狀態模式。

package 公司請假;

public abstract class state

package 公司請假;

public class date

public string getpeople()

public void setpeople(string people)

public double gettianshu()

public void settianshu(double tianshu)

public state getcurrent()

public void setcurrent(state current)

public boolean ispd()

public void setpd(boolean pd)

public string getreason()

public void setreason(string reason)

public void dd() }

package 公司請假;

public class first extends state

else

// todo auto-generated method stub }}

package 公司請假;

public class second extends state

else

// todo auto-generated method stub }}

package 公司請假;

public class last extends state

else

// todo auto-generated method stub }}

package 公司請假;

public class test

}

其中的關鍵是每次有狀態轉換時,都要寫上dd()這個函式。

在date類中,dd()這個函式要重新寫入自己。

狀態模式例項請假流程

工作流中的請假流程 某人提出請假申請,先由專案經理審批,如果專案經理不同意,審批就直接結束 如專案經理同意,再看是否超過3天,如果三天以內,審批直接結束 否則,交給部門經理,部門經理審核後,無論是否同意,審批直接結束 狀態類package 狀態模式 public abstract class sta...

設計模式 狀態模式

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

設計模式 狀態模式

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