Шаблон проектирования для отмены движка

Я пишу инструмент для структурного моделирования для приложений гражданского строительства. У меня есть один огромный класс модели, представляющий все здание, которое включает в себя наборы узлов, линейных элементов, нагрузок и т. Д., Которые также являются пользовательскими классами.

Я уже кодировал движок отмены, который сохраняет глубокую копию после каждой модификации модели. Теперь я начал думать, мог бы я по-другому кодировать. Вместо сохранения глубоких копий, я мог бы сохранить список каждого действия модификатора с соответствующим обратным модификатором. Чтобы я мог применить обратные модификаторы к текущей модели, чтобы отменить, или модификаторы, чтобы повторить.

Я могу представить, как вы выполняете простые команды, которые изменяют свойства объекта и т. Д. Но как насчет сложных команд? Как вставка новых объектов узлов в модель и добавление некоторых линейных объектов, которые сохраняют ссылки на новые узлы.

Как можно было бы реализовать это?

Ответы на вопрос(22)

Ваш ответ на вопрос