Strategy Pattern
Defines a family of algorithms, encapsulates each one, and makes them interchangeable at runtime.
Context class holds a reference to a Strategy interface
Concrete strategies (e.g. BubbleSort, QuickSort) implement the interface
The algorithm used can be swapped at runtime without changing the Context
Use cases: sorting algorithms, payment method selection, route calculation, compression method
Benefit: eliminates if-else chains for choosing algorithm; open-closed principle