java狀態機應用場景 狀態機設計模式 實例



文章插圖
java狀態機應用場景 狀態機設計模式 實例

文章插圖
狀態模式(State Pattern):
【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();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());}}