Я пишу инструмент структурного моделирования для приложения для гражданских инженеров. У меня есть один огромный класс модели, представляющий все здание, которое включает в себя коллекции узлов, элементов линий, загрузок и т.д., Которые также являются пользовательскими классами.
Я уже закодировал механизм отмены, который сохраняет глубокую копию после каждой модификации модели. Теперь я начал думать, могу ли я кодировать по-другому. Вместо сохранения глубоких копий я мог бы сохранить список каждого действия модификатора с соответствующим модификатором обратного хода. Чтобы я мог применить обратные модификаторы к текущей модели для отмены, или модификаторы для повторного использования.
Я могу представить, как вы будете выполнять простые команды, которые изменяют свойства объекта и т.д. Но как насчет сложных команд? Как вставка новых объектов node в модель и добавление некоторых объектов линии, содержащих ссылки на новые узлы.
Как бы это реализовать?