The Strategy pattern and the Decorator pattern
We saw that in trying to be more flexible with our game object, a lot of behavior was factored into the base class. We also said that it would be nice to attach a behavior at runtime and have it detach itself when we are done with it.
There are actually two design patterns that have the potential to help our design, the Strategy pattern and the Decorator pattern. The Strategy pattern is all about encapsulating sets of behaviors instead of inheriting. The Decorator pattern is all about dynamically adding responsibilities as needed.
The Strategy pattern explained
The Strategy pattern is about encapsulating a set of behaviors and having the client control the behavior through an interface, instead of hardcoding the behavior into the client function itself. What this means is that we want the game object to be completely independent of the behavior it uses. Imagine that we want to give each enemy a different attack and flight AI. We could use the Strategy...