In this chapter, we are implementing a weapon system with attachments. We have a couple of specifications to consider, such as the following:
- We need to be able to attach multiple attachments to a weapon.
- We need to be able to add and remove them at runtime.
The Decorator pattern offers us a way to fulfill these two core requirements. Therefore, it's a pattern to consider when implementing a system in which we need to support the ability to add and remove behaviors to an individual object in a dynamic manner.
For instance, if we are assigned to work on a CCG (collectible card game), we might have to implement a mechanism in which the player can augment a base card's powers with artifact cards stacked on top of each other. Another use case is imagining having to implement a wardrobe system in which players can decorate their armor with accessories to buff specific stats.
In both cases, using the Decorator pattern could be a good...