java狀態機在訂單中應用:java狀態機設計模式及實現

狀態模式(State Pattern):

一個對象的內在狀態改變時允許改變其行為,這個對象看起來像是改變了其類。

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

狀態模式的角色:

上下文環境(Context)角色、抽象狀態(State)角色、具體狀態(Concrete State)和客戶端(Client)角色;

狀態模式的案例:

實現類圖:

Java,設計模式,行為型,狀態模式,內在狀態改變時改變行為

實現代碼:

/**
 * 上下文環境(Context)角色
 */
public class Context {
	
	private State state;

	public Context() {
		state = null;
	}

	public void setState(State state) {
		this.state = state;
	}

	public State getState() {
		return state;
	}
	
}
/**
 * 抽象狀態(State)角色
 */
public interface State {
	
   public void doAction(Context context);
   
}
/**
 * 具體狀態(Concrete State)
 */
public class StartState implements State {

	public void doAction(Context context) {
		System.out.println("Player is in start state.");
		context.setState(this);
	}

	public String toString() {
		return "Start State";
	}

}
/**
 * 具體狀態(Concrete State)
 */
public class StopState implements State {

	public void doAction(Context context) {
		System.out.println("Player is in stop state.");
		context.setState(this);
	}

	public String toString() {
		return "Stop State";
	}
}
/**
 * 客戶端
 */
public class Client {

	public static void main(String[] args) {
		Context context = new Context();

		StartState startState = new StartState();
		startState.doAction(context);
		System.out.println(context.getState().toString());

		StopState stopState = new StopState();
		stopState.doAction(context);
		System.out.println(context.getState().toString());

	}

}

原創文章,作者:投稿專員,如若轉載,請註明出處:https://www.506064.com/zh-hk/n/224088.html

(0)
打賞 微信掃一掃 微信掃一掃 支付寶掃一掃 支付寶掃一掃
投稿專員的頭像投稿專員
上一篇 2024-12-09 14:36
下一篇 2024-12-09 14:36

相關推薦

發表回復

登錄後才能評論