I love the Strategy design pattern. I try to use it as much as I can. In its essence, the Strategy pattern uses delegation to decouple algorithms from the classes that use them. There are a few benefits to this. It prevents using big conditionals to decide which algorithm to use for the given type of object. It separates concerns, thus reducing the complexity of the clients and it promotes composi