Taking Data Snapshots with the Memento Pattern
In this chapter, we’re going to focus on a wonderful way of storing, managing, and restoring data snapshots (the internal state of an object at a given point in time) using the Memento pattern. This should sound familiar because we see this functionality all over the place, like when we cancel transactions, carry out undo or redo actions (like we did in Chapter 8, Binding Actions with the Command Pattern), use checkpoint systems, and – most importantly – version control!
Object state can be a tricky subject because we not only have to be aware of how we’re tracking and updating the state values, but how we’re exposing the stateful information to other objects in our projects. We already covered how to manage internal state transitions in Chapter 10, Controlling Behavior with the State Pattern, so instead we’ll focus on safely exposing (and saving) snapshots of internal state.
And that...