The command pattern allow us to craft a uniform interface, known as an Invoker, that issues commands which encapsulate the inner workings of the operation
The invoker must expose an execute method that accepts a command and executes its internal execute function
Commands act on a reciever, which receives the outcome of an action
The invoker may also provide with the ability to undo operations
This pattern allows you to write diverse set of operations, without affecting or refactoring the invoker interface, used by the client