Specify, queue, and execute requests at different times. Support logging changes. Structure a system around high-level operations built on primitives operations. Collaborations Consequences 1. Command decouples the object that invokes the operation from the one that performs it.
Commands are first-class objects.
It's easy to add new Commands. Supporting undo and redo. Avoiding error accumulation in the undo process. Store more information in the command to ensure that objects are restored to their original state. Sample Code Implementation of the Command classes in the Motivation section.