Шаблон проектирования для Undo Engine

Я думаю, что и сувенир, и gof команда непрактичны, когда design-pattern вы имеете дело с моделью design-pattern того размера и объема, которые patterns подразумевает ОП. Они будут patterns работать, но потребуется gof много работы по поддержанию patterns и расширению.

Для этого типа design-pattern проблемы, я думаю, вам необходимо patterns встроить поддержку вашей gof модели данных, чтобы поддерживать undo дифференциальные контрольные undo точки для каждого объекта, задействованного design-pattern в модели. Я сделал это однажды, и undo это сработало очень гладко. Самое patterns важное, что вам нужно сделать, - это design-patterns избегать прямого использования gang-of-four указателей или ссылок в модели.

Каждая design-patterns ссылка на другой объект использует design-pattern некоторый идентификатор (например, целое design-patterns число). Когда объект нужен, вы patterns ищите текущее определение design-pattern объекта в таблице. Таблица design-pattern содержит связанный список pattern для каждого объекта, который design-pattern содержит все предыдущие версии, а design-patterns также информацию о том, для pattern какой контрольной точки они design-patterns были активны.

Выполнить отмену gang-of-four / возврат просто: выполните undo свое действие и установите patterns новую контрольную точку; откатить undo все версии объекта к предыдущей pattern контрольной точке.

Это требует pattern определенной дисциплины в gof коде, но имеет много преимуществ: вам patterns не нужны глубокие копии, поскольку gang-of-four вы выполняете дифференциальное gang-of-four хранение состояния модели; вы design-pattern можете определить объем памяти, который gang-of-four вы хотите использовать (очень важно undo для таких вещей, как модели patterns САПР) либо количеством повторов, либо gof использованной памятью; очень pattern масштабируемые и не требующие design-pattern обслуживания для функций, которые design-pattern работают с моделью, поскольку patterns им не нужно ничего делать design-patterns для реализации отмены / повтора.

design-patterns

undo

2022-10-28T17:20:34+00:00