The command pattern
The command pattern adds a level of abstraction between actions that must be done and the object that invokes those actions, normally at a later time. In the command pattern, client code creates a Command
object that can be executed at a later date. This object knows about a receiver object that manages its own internal state when the command is executed on it. The Command
object implements a specific interface (typically, it has an execute
or do_action
method, and also keeps track of any arguments required to perform the action. Finally, one or more Invoker
objects execute the command at the correct time.
Here's the UML diagram:
A common example of the command pattern is actions on a graphical window. Often, an action can be invoked by a menu item on the menu bar, a keyboard shortcut, a toolbar icon, or a context menu. These are all examples of Invoker
objects. The actions that actually occur, such as Exit
, Save
, or Copy
, are implementations of CommandInterface
. A GUI...