package state; /** * State Design Pattern — Runnable Demo * Run: javac state/*.java -d out/state && java -cp out/state state.Main * Article: https://ankurm.com/state-design-pattern-java/ */ public class Main { public static void main(String[] args) { System.out.println("=== State Design Pattern Demo ===\n"); TrafficLight light = new TrafficLight(); System.out.println("Starting state: " + light.getColor()); System.out.println("\n-- Cycling through states --"); for (int i = 0; i < 6; i++) { light.next(); } System.out.println("\n-- Without State pattern: a single class with if/else --"); System.out.println(" Every new state adds to every method's if-else chain."); System.out.println(" With State: add one new class, touch nothing else."); System.out.println("\n=== Demo complete ==="); } }