Creating a save system
Imagine you’re coming into a game project as a new developer and your first assignment is to create a system for saving user data, which includes the player’s stats, weapon, and weapon modifications (if they’ve collected any). Development is already pretty far along, so you’re not allowed to mess with any of the existing classes that manage all the fun stuff, but you have access to the player and, therefore, indirect access to its stats, weapon, and mods.
Since the Player
object has a set structure, you know exactly what needs to be done – implement the Visitor pattern and create a data-saving visitor that can be applied to each of the player component elements without changing the underlying objects.
We’ll do this with a combination of interfaces, concrete elements, and, of course, a Visitor
class, all of which are covered in the following subsections.
Structuring the interfaces
One of the things I...