Design Patterns

Command Pattern

The Command Pattern is a behavioral design pattern that encapsulates a request as an object, thereby allowing parameterization of clients with different requests, queuing of requests, and logging of requests. It also supports undoable operations.

Usage Scenarios
  1. Menu Systems: Commands can represent menu items, where each command knows how to execute a specific action when the menu item is selected.
  2. Undo Mechanisms: Commands can store enough information to undo their actions, providing a robust undo functionality.
  3. Multi-Level Undo: By maintaining a history of executed commands, it becomes possible to undo multiple levels of operations sequentially.
  4. Transactional Behavior: Commands can be used to encapsulate a series of actions that must either all succeed or all fail (similar to database transactions).
Key Concepts
  • Encapsulation: Commands encapsulate all the details of an operation (action and receiver) into an object, making them standalone and reusable.
  • Decoupling: It decouples the sender (client that initiates a request) from the receiver (object that performs the actual action), allowing changes in one without affecting the other.
  • Flexibility: Commands can be stored, queued, and undone. This is useful for implementing features like undo-redo functionality or transactional behavior.