Command: Encapsulate a command request as an object. Encapsulate
a request as an object, thereby letting you parameterize clients
with different requests, queue or log requests, and support undoable
operations.
decoupling between invoker and carrier of a command.
single command is easy. Using command, you can 1) log of command, 2)
undo a command 3) Transaction of command. They are more valuable.