When I get tasked with implementing behaviors for an enemy character, the first options I consider are the State pattern or a finite state machine (FSM) since most of the time, characters are stateful.
But sometimes, I might use the Strategy pattern if the following conditions are met:
- I have an entity with several variants of the same behavior, and I want to encapsulate them in individual classes.
- I want to assign specific behavior variants to an entity at runtime, without the need to take its current internal state into consideration.
- I need to apply a behavior to an entity so that it can accomplish a specific task based on selection criteria that are defined at runtime.
The third point is probably the main reason I chose to use the Strategy pattern over the State pattern to implement the enemy drone presented in this chapter. The behavior of the drone is robotic; it has a singular task: attack the player. It doesn't make any alterations to its...