package strategy; import java.util.Arrays; /** * Strategy Design Pattern — Runnable Demo * Run: javac strategy/*.java -d out/strategy && java -cp out/strategy strategy.Main * Article: https://ankurm.com/strategy-design-pattern-java/ */ public class Main { public static void main(String[] args) { System.out.println("=== Strategy Design Pattern Demo ===\n"); int[] data = {64, 34, 25, 12, 22, 11, 90}; System.out.println("Input: " + Arrays.toString(data)); Sorter sorter = new Sorter(new BubbleSort()); System.out.println("\n-- BubbleSort --"); System.out.println("Sorted: " + Arrays.toString(sorter.sort(data))); sorter.setStrategy(new MergeSort()); System.out.println("\n-- MergeSort --"); System.out.println("Sorted: " + Arrays.toString(sorter.sort(data))); sorter.setStrategy(new QuickSort()); System.out.println("\n-- QuickSort --"); System.out.println("Sorted: " + Arrays.toString(sorter.sort(data))); System.out.println("\n-- Runtime strategy selection (simulating large dataset) --"); int size = 10_000; SortStrategy chosen = size > 1000 ? new QuickSort() : new BubbleSort(); sorter.setStrategy(chosen); System.out.println(" Chose " + chosen.getName() + " for size=" + size); System.out.println("\n=== Demo complete ==="); } }