0% found this document useful (0 votes)
8 views4 pages

State Pattern

Uploaded by

Natalia B.
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
8 views4 pages

State Pattern

Uploaded by

Natalia B.
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
You are on page 1/ 4

15/01/24, 11:51 Design Patterns - State Pattern

Design Patterns - State Pattern

In State pattern a class behavior changes based on its state. This type of design
pattern comes under behavior pattern.

In State pattern, we create objects which represent various states and a context
object whose behavior varies as its state object changes.

Implementation
We are going to create a State interface defining an action and concrete state
classes implementing the State interface. Context is a class which carries a State.

StatePatternDemo, our demo class, will use Context and state objects to
demonstrate change in Context behavior based on type of state it is in.

Step 1
Create an interface.

State.java

https://www.tutorialspoint.com/design_pattern/state_pattern.htm 1/4
15/01/24, 11:51 Design Patterns - State Pattern

public interface State {


public void doAction(Context context);
}

Step 2
Create concrete classes implementing the same interface.

StartState.java

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

StopState.java

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

Step 3
Create Context Class.

https://www.tutorialspoint.com/design_pattern/state_pattern.htm 2/4
15/01/24, 11:51 Design Patterns - State Pattern

Context.java

public class Context {


private State state;

public Context(){
state = null;
}

public void setState(State state){


this.state = state;
}

public State getState(){


return state;
}
}

Step 4
Use the Context to see change in behaviour when State changes.

StatePatternDemo.java

public class StatePatternDemo {


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());
}
}

Step 5
https://www.tutorialspoint.com/design_pattern/state_pattern.htm 3/4
15/01/24, 11:51 Design Patterns - State Pattern

Verify the output.

Player is in start state


Start State
Player is in stop state
Stop State

https://www.tutorialspoint.com/design_pattern/state_pattern.htm 4/4

You might also like