Encapsulate a request as an object, thereby letting you parameterize clients with different requests, queue or log requests, and support undoable operations
execute() stores state for reversalunexecute() reverses the effects of a previous execute()execute() by invoking the corresponding operation(s) on Receiverexecute() on the command. When commands are undoable, ConcreteCommand stores the state for undoing the command before invoking Execute.