Design patterns are solutions to common problems that have been compiled by developers over the years. The strategy design pattern are classes that extend the functionality of another class. It is implemented in a modular way so that adding or removing functionality is flexible. For example, it can be a toy dog that has different card slots that allow for different functionality such as barking, jumping, eating, and walking. The cards would be interchangeable and we would switch them out when we want to change the dog’s behavior.