State Pattern
- is a behavioral design pattern that lets an object alter its behavior when its internal state changes. It appears as if the object changed its class
Structure
/behavioral-design-patterns/state-pattern/state-pattern-structure.png)
Code Examples
Simple Example
interface State { void handle(); } class OnState implements State { public void handle() { System.out.println("Turning ON"); } } class OffState implements State { public void handle() { System.out.println("Turning OFF"); } } class Context { private State state; public void setState(State state) { this.state = state; } public void request() { state.handle(); } } // Usage Context ctx = new Context(); ctx.setState(new OnState()); ctx.request(); // "Turning ON" ctx.setState(new OffState()); ctx.request(); // "Turning OFF"
Comparisons
Click here to expand...
Link to originalStrategy Pattern vs State Pattern
- in State Pattern, particular states are aware of each other
- in Strategy Pattern, strategies are almost never aware of each other