27 lines
911 B
Java
27 lines
911 B
Java
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 ===");
|
|
}
|
|
}
|