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

狀態模式(State Pattern):

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

文章插圖
一個對象的內在狀態改變時允許改變其行為,這個對象看起來像是改變了其類 。
狀態模式主要解決,當控制一個對象狀態的條件表達式過于復雜時的情況;把狀態的判斷邏輯轉移到表示不同狀態的一系列類中,可以把復雜的判斷邏輯簡化;
狀態模式的角色:
上下文環境(Context)角色、抽象狀態(State)角色、具體狀態(Concrete State)和客戶端(Client)角色;
狀態模式的案例:
實現類圖:
實現代碼:
/** * 上下文環境(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();
【java狀態機在訂單中應用 java狀態機設計模式及實現】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());
}
}

    推薦閱讀