The State is one of the Behavioral design patterns, In this the behavior of a class changes based on its state.
Key concepts:
Context: Class/object whose behavior changes based on state
State: abstract state
Concrete State: representing various states, which changes the behavior of the Context class.
Let's understand this with an example:
State.java
public interface State { public void doAction(Context context); }
Concrete Implementation of State
public class StartState implements State { private Context context; public StartState(){} @Override public void doAction(Context context){ this.context = context; this.context.setState(this); System.out.println("Player is in StartState"); } public String toString(){ return "Start State"; } } public class EndState implements State { private Context context; public EndState(){} @Override public void doAction(Context context){ this.context = context; this.context.setState(this); System.out.println("Player is in EndState"); } public String toString(){ return "End State"; } }
Main
public class Main { public static void main(String args[]){ Context context = new Context(); State state = new StartState(); state.doAction(context); //current state System.out.println(context.getState().toString()); State state2 = new EndState(); state2.doAction(context); //new State System.out.println(context.getState().toString()); } }
output:
Player is in StartState Start State Player is in EndState End State
note: The above code follows ISP, LSP, SRP, OCP of solid principles
以上是State的详细内容。更多信息请关注PHP中文网其他相关文章!