package state; /** Context — holds the current state and delegates behaviour to it */ public class TrafficLight { private TrafficLightState state; public TrafficLight() { setState(new RedState()); } public void setState(TrafficLightState newState) { this.state = newState; state.onEnter(this); } public void next() { state.next(this); } public String getColor() { return state.getColor(); } }