public class MyStateMachine { private State currentState; public MyStateMachine() { currentState = new InitialState(); } public void processEvent(Event event) { currentState = currentState.handleEvent(event); } } public interface State { State handleEvent(Event event); } public class InitialState implements State { @Override public State handleEvent(Event event) { if (event == Event.A) { return new StateA(); } else if (event == Event.B) { return new StateB(); } else { return this; } } } public class StateA implements State { @Override public State handleEvent(Event event) { if (event == Event.C) { return new StateC(); } else { return this; } } } public class StateB implements State { @Override public State handleEvent(Event event) { if (event == Event.C) { return new StateC(); } else { return this; } } } public class StateC implements State { @Override public State handleEvent(Event event) { if (event == Event.D) { return new StateD(); } else { return this; } } } public class StateD implements State { @Override public State handleEvent(Event event) { return this; } } public enum Event { A, B, C, D }


上一篇:
下一篇:
切换中文