The Command Pattern turns a request or a behavior into a stand-alone object that contains everything about that request. It encapsulates all the relevant information needed to perform an action or trigger an event. The goal is for this action may be reused by several parts of our application. * Opens a lot of interesting use cases: such as passing commands as method arguments, storing them inside other objects or even switching commands at runtime. * commands can be serialized, making it easy to write it to and read it from a file, db, etc. Consequently, this object can be schedules, queued, logged, or even sent over the network. ![[Screenshot 2023-09-05 at 1.16.10 AM.png]]