So let's try to summarize what we've learned about the command design pattern.
So the idea is that you take an operation and you encapsulate all the details of this operation into
a separate object.
And the great thing about having an object is you can serialize it.
You can store it in memory you can store it on disk it's a lot easier to work with and you can also
roll this operation back.
So then you define the instruction for actually applying the command.
So having just having the command isn't enough you need some sort of command processor which is able
to take this command and apply it to whatever is the subject of the command and Optionally you can define
additional instructions.
So in addition to applying the command you can also define instructions for rolling back or undoing
the command.
And then of course you can have all sorts of funds with commands like for example you can create composite
commands and this would typically be called macros in everyday speak so this is where you have a set
of commands and you kind of package them into a single command that can be invoked.
And similarly it can be rolled back as well.