Solution (source code)

= Solution

The \b[<Strategy pattern> is a <behavioral pattern> that encapsulates alternative algorithms behind a shared <object interface>]. A context holds a strategy and delegates the relevant operation to it, letting the chosen algorithm vary independently of its caller.

Use it when the same task has interchangeable policies, such as alternative pricing or route-selection algorithms. Supplying a different strategy changes the policy without expanding a chain of type tests in the context, and each policy can be checked independently. <Object composition> makes the selected strategy replaceable; clients rely on its contract rather than on one concrete implementation.