Summary
In this chapter, we covered the Command pattern. Using this design pattern, we can encapsulate an operation such as copy/paste as an object. This offers many benefits, as follows:
We can execute a command whenever we want and not necessarily in creation time
The client code that executes a command does not need to know any details about how it is implemented
We can group commands and execute them in a specific order
Executing a command is like ordering at a restaurant. Each customer order is an independent command that enters many stages and is finally executed by the cook.
Many GUI frameworks, including PyQt use the Command pattern to model actions that can be triggered by one or more events and can be customized. However, Command is not limited to frameworks; normal applications such as git-cola also use it for the benefits it offers.
Although the most advertised feature of Command by far is undo, it has more uses. In general, any operation that can be executed on user's will at runtime...