The objects participating in this pattern are: Client -- In example code: the run() function references the Receiver object Receiver -- In example code: Calculator knows how to carry out the operation associated with the command (optionally) maintains a history of executed commands Command -- In example code: Command maintains information about the action to be taken Invoker -- In our example code