The command pattern should be used when: You need a command to have a life span independent of the original request, or if you want to queue, specify and execute requests at different times . You need undo/redo operations. The command’s execution can be stored for reversing its effects.