Strategy Design Pattern — Java Example
Pattern: Behavioral → Strategy Article: https://ankurm.com/strategy-design-pattern-java/
What this example shows
Three sorting algorithms behind one interface, swappable at runtime. SortStrategy declares sort() and getName(). BubbleSort, MergeSort, and QuickSort each implement the full algorithm — not stubs, the real divide-and-conquer and partition logic. Sorter is the context: it holds whichever strategy is active and copies the input array before sorting so callers can compare results without mutating their data. Main sorts the same array with all three strategies in turn, then simulates choosing a strategy based on input size.
How to run
javac strategy/*.java -d out/strategy
java -cp out/strategy strategy.Main
Requires Java 25.
Post Section ↔ File Mapping
| Post Section | File(s) |
|---|---|
| Implementation: Pluggable Sorting — the Strategy interface | SortStrategy.java |
| Implementation: Pluggable Sorting — BubbleSort | BubbleSort.java |
| Implementation: Pluggable Sorting — MergeSort | MergeSort.java |
| Implementation: Pluggable Sorting — QuickSort | QuickSort.java |
| Implementation: Pluggable Sorting — the Context (Sorter) | Sorter.java |
| Implementation: Pluggable Sorting — wiring it together | Main.java |
Note: the "Strategy in Java 8+: Lambdas as Strategies" snippet (Comparator/lambda example) is illustrative only — it is not part of this repository's runnable example.
Article: https://ankurm.com/strategy-design-pattern-java/ All patterns: https://ankurm.com/design-patterns-java/