Strategy
Intent
- define a family of algorithms, encapsulate each one, and make them interchangeable. Strategy lets the algorithm vary independently from clients that use it.
Applicability
- when object should be configurable with algorithm to be used
- need to dynamically reconfigure