В моем приложении я хочу предоставить пользователю небольшую функциональность отмены. Пользователем не так много действий, которые могут быть отменены пользователем. В частности, эти действия являются:Как реализовать функциональность отмены?
- Добавление примечаний к объекту
- Цвет объекта
- тег objcet со строкой
Теперь я думал о том, как осуществить это. Сначала я подумал о классе Action, который является абстрактным базовым классом для трех различных действий, которые могут быть предприняты пользователем. Каждый раз, когда пользователь берет на себя эти действия, создается новый соответствующий экземпляр подкласса этого абстрактного класса Action и вставляется в список, содержащий все действия.
Всякий раз, когда пользователь хочет что-то отменить, список отображается пользователю, и он может выбрать, какое действие он хочет отменить.
Теперь я думал, что должно быть сохранено в таком объекте действия:
- состояние объекта перед действием
- реальное действие, которое было принято (например, строка, которая была добавлена к примечания объекта)
Я не уверен, что этого достаточно. Я также думал о чем-то вроде хронологического упорядочения, но это необходимо, так как список можно сохранить хронологически правильным.
Есть ли другие вещи, которые я должен рассмотреть?
Поиск шаблона замещения в GOF – pastjean
Или шаблон команды – slayerIQ
См. Также здесь: http://stackoverflow.com/questions/49755/design-pattern-for-undo-engine –