狀態模式git
public interface IState { void print(Context context); }
public class Context { private IState state; public Context(){ this.state = null; } public void setState(IState state){ this.state = state; System.out.println("setState : " + state.getClass().getSimpleName()); } public void print(){ state.print(this); } }
public class StateA implements IState { @Override public void print(Context context) { System.out.println("StateA print ..."); context.setState(new StateB()); } } public class StateB implements IState { @Override public void print(Context context) { System.out.println("StateB print ..."); context.setState(new StateA()); } }
public static void main(String[] args) { Context context = new Context(); context.setState(new StateA()); context.print(); context.print(); }
setState : StateA StateA print ... setState : StateB StateB print ... setState : StateA
https://github.com/Seasons20/DisignPattern.git
ENDgithub