## Command Command pattern encapsulates a request as an object, thereby letting you parameterize clients with different requests, queue or log requests, and supports undoable operations. The pattern has a behavioral purpose and deals with relationships between objects. ### When to use * want to parameterize objects by an action to perform * want to specify, queue, and execute requests at different times * support undo * support logging changes so that they can be reapplied in case of a system crash * structure a system around high-level operations built on primitives operations