This week's book giveaway is in the OCAJP 8 forum. We're giving away four copies of OCA Java SE 8 Programmer I Study Guide and have Edward Finegan & Robert Liguori on-line! See this thread for details.
I would like to describe it as executing one or more command over a receiver by an invoker on request of a client.
Giving an example, I had a complex data model/structure which was represented through an Eclipse RCP front end visually. Clearly there were two modules involved, 1. The GUI representing the data 2. The data itself within some data structure comprising Graphs and B-Trees. On user intervention the model has to change and to be persisted. Moreover there could be different type of user actions possible like sorting in ascending/descending order, add/remove some nodes etc. It was possible to directly modify the data structure through GUI code, but that would unnecessarily clutter the module and separation of concern would not have been achieved.
Hence came commands. GUI buttons acted as clients creating concrete commands, a command invoker class who logs as well as execute the commands and the data structure/model acted as a receiver who were supposed to change differently for different commands.