Family of algorithms, each encapsulated and made interchangeable.
Strategy allows the algorithm to vary independently from the clients that use it.
Capture the abstraction into an interface, compose details into derived classes.