Open main menu
Home
Random
Recent changes
Special pages
Community portal
Preferences
About Wikipedia
Disclaimers
Incubator escapee wiki
Search
User menu
Talk
Dark mode
Contributions
Create account
Log in
Editing
Command pattern
(section)
Warning:
You are not logged in. Your IP address will be publicly visible if you make any edits. If you
log in
or
create an account
, your edits will be attributed to your username, along with other benefits.
Anti-spam check. Do
not
fill this in!
{{Short description|Behavioral design pattern}} {{no footnotes|date=December 2012}} In [[object-oriented programming]], the '''command pattern''' is a [[Behavioral pattern|behavioral]] [[Design pattern (computer science)|design pattern]] in which an object is used to [[Information hiding|encapsulate]] all information needed to perform an action or trigger an event at a later time. This information includes the method name, the object that owns the method and values for the method parameters. Four terms always associated with the command pattern are ''command'', ''receiver'', ''invoker'' and ''client''. A ''command'' object knows about ''receiver'' and invokes a method of the receiver. Values for parameters of the receiver method are stored in the command. The receiver object to execute these methods is also stored in the command object by [[Object composition#Aggregation|aggregation]]. The ''receiver'' then does the work when the <code>execute()</code> method in ''command'' is called. An ''invoker'' object knows how to execute a command, and optionally does bookkeeping about the command execution. The invoker does not know anything about a concrete command, it knows only about the command ''interface''. Invoker object(s), command objects and receiver objects are held by a ''client'' object. The ''client'' decides which receiver objects it assigns to the command objects, and which commands it assigns to the invoker. The client decides which commands to execute at which points. To execute a command, it passes the command object to the invoker object. Using command objects makes it easier to construct general components that need to delegate, sequence or execute method calls at a time of their choosing without the need to know the class of the method or the method parameters. Using an invoker object allows bookkeeping about command executions to be conveniently performed, as well as implementing different modes for commands, which are managed by the invoker object, without the need for the client to be aware of the existence of bookkeeping or modes. The central ideas of this design pattern closely mirror the semantics of [[first-class function]]s and [[higher-order function]]s in [[functional programming language]]s. Specifically, the invoker object is a higher-order function of which the command object is a first-class argument.
Edit summary
(Briefly describe your changes)
By publishing changes, you agree to the
Terms of Use
, and you irrevocably agree to release your contribution under the
CC BY-SA 4.0 License
and the
GFDL
. You agree that a hyperlink or URL is sufficient attribution under the Creative Commons license.
Cancel
Editing help
(opens in new window)