Strategy is great for run time polymorphism, because thats essentially what it is! We are taking a group of algorithms and changing their behavior when they are called. This gives the user plenty of options on whether or not a class will behave a certain way.

This UML (taken from Derrick Bansas’s video: ( https://www.youtube.com/watch?v=-NCgRD9-C6o&list=PLF206E906175C7E07&index=3 ) does a great job of clarifying why to use the strategy method.
In this flow chart, we can see that class animal has a relationship with class flys. We want this because instead of adding a fly method to every new instance of animal, animal will have an instance of a fly interface, with classes itFlys and CantFly being part of the interface. From there, we can decide what does fly and what doesnt, allowing for more dynamic use of the fly class. For instance, if the bird couldnt fly anymore for some reason, but the dog can, we can change those variables without re structuring the code for animal, dog, or bird.
Follow more on my github for a demonstration of the strategy method: https://github.com/dmurtagh14/StrategyDesignPattern