prashantrmishra

Prashant Mishra

Posted on September 22, 2024

State

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);
}
Enter fullscreen mode Exit fullscreen mode

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";
    } 
}

Enter fullscreen mode Exit fullscreen mode

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());
    }
}
Enter fullscreen mode Exit fullscreen mode

output:

Player is in StartState
Start State
Player is in EndState
End State
Enter fullscreen mode Exit fullscreen mode

note: The above code follows ISP, LSP, SRP, OCP of solid principles

💖 💪 🙅 🚩
prashantrmishra
Prashant Mishra

Posted on September 22, 2024

Join Our Newsletter. No Spam, Only the good stuff.

Sign up to receive the latest update from our blog.

Related

State
java State

September 22, 2024