These two patterns deal with times that you've got a requirement to be able to undo work. There's Memento, which is a pattern of limited use (if only because a lot of the classic implementations are already available for you to use), and Command, which is one of the most criminally under-used patterns in the whole book. Memento Let's deal with Memento first. Personally, I think most of the problem with Memento is its name. It's a checkpoint. You store checkpoints as you're working, and you restore back to a checkpoint if something doesn't work. A good design for a...