Command Pattern
Role
The Command pattern creates distance between the client that requests an operation and the object that can perform it. This pattern is particularly versatile. It can support:
Sending requests to different receivers
Queuing, logging, and rejecting requests
Composing higher-level transactions from primitive operations
Redo and Undo functionality
Illustration
The Command pattern is used in the menu systems of many well-known applications. An example of such an interface is shown in Figure 8-5 (which happens to be the program editor I usually use). Note that there are different insert and copy operations.

Figure 8-5. Command pattern illustration—menus
The figure shows two ways in which commands can be activated: select them from a drop-down textual menu, or click on the icons that represent each of the operations. In the top menu, there could be a receiver that handles word processing cut-and-paste-type operations, and another for brace matching and changing case. For most of these commands, Undo and Redo functions will also be appropriate; however, some operations are indicated in gray, which means they cannot be undone or repeated. Furthermore, in systems such as this one, there is usually a way of stringing together some commands so that they can be executed in a batch later. These so-called macro commands are common in graphics and photo-editing programs.
Design
The design ...
Become an O’Reilly member and get unlimited access to this title plus top books and audiobooks from O’Reilly and nearly 200 top publishers, thousands of courses curated by job role, 150+ live events each month,
and much more.
Read now
Unlock full access