Strategy pattern

The Strategy pattern defines a family of algorithms, encapsulates each
one, and makes them interchangeable. Strategy lets the algorithm vary
independently from clients that use it.