O'Reilly logo

C# 3.0 Design Patterns by Judith Bishop

Stay ahead with the world's most comprehensive technology and business learning platform.

With Safari, you learn the way you learn best. Get unlimited access to videos, live online training, learning paths, books, tutorials, and more.

Start Free Trial

No credit card required

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.

Command pattern illustration—menus

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 ...

With Safari, you learn the way you learn best. Get unlimited access to videos, live online training, learning paths, books, interactive tutorials, and more.

Start Free Trial

No credit card required