The Strategy pattern encapsulates a set of related algorithms into individual classes and makes them interchangeable with each other.
client code can choose which algorithm to use without needing to know the internal details of how each one works.
Instead of checking an enum or some type that is passed in to a method and a case/switch statement to decide what algorithm to perform, can now new up an object with the type which then decides what algorithm to perform hence not need to change the calling code (OCP)
We choose the strategy at runtime, when we new up the dependencies in the constructor args. OR when we run the method.