Even if the Command pattern was perfectly suited for our use case, there are some alternative patterns and solutions we could have considered:
- Memento: The Memento pattern provides the ability to roll back an object to a previous state. This was not our first choice for our replay system because we are focusing on recording inputs and queuing them for replay at a later time, which is very compatible with the design intention of the Command pattern. However, if we implemented a system with a rollback to the previous state feature, the Memento pattern will probably be our first choice.
- Queue/Stack: Queues and stacks are not patterns, but data structures, but we could simply encode all our inputs and store them in a queue directly in our InputHandler class. It would have been more straightforward and less verbose than using the Command pattern. The choice between implementing a system with or without conventional design patterns is very contextual. If...