Reusable library that can equip any action in your application with the Undo/Redo feature. You may use complex data structures and complex algorithms with no care about how they will be rolled back on user demand or after an error.
- Undo/Redo stack for commands executed
- Isolated areas (can support separate undo/redo stack for every document in the application)
- Recovering application state after an exception
- Nested commands
- Affined commands (can merge multiple identical commands into one command)
- Tracking user activites (can provide log file for feature usage analysis)
- No constraints for Data Model declaration
- No special requirements for Buisness Logic
And last point: You do not need Command Pattern any more!