The command design pattern
Sometimes in our applications, we might need to pass information to other objects about how to perform some action. Usually, this action will be executed at a later time based on some kind of event. The object that will execute our commands is called invoker, and it might not even be aware of the command it actually runs. It just knows about the interface, which means that it knows how to trigger the command. The command design pattern helps us to achieve what we said above. Its purpose is to:
Encapsulate the information needed to perform an action at a later stage and pass this information to the object that will be running the actual code.
Usually, the command information will contain the object that owns the method, ...