Strategy is a behavioral design pattern used to encapsulate logic (referred to as a "strategy") that is bound to a shared interface. This is typically implemented with an abstract base class used to ...