Strategy Pattern
- The Strategy pattern allows us to offer a family of behaviors (algorithms) using a common and uniform interface
- Clients are allowed to interchange the strategies easily
- Extremely valuable when designing scalable solutions where the implementation is likely to change