Memento дизайн шаблона с композитным рисунком

У меня есть класс прямоугольника, который расширяет класс формы, составной класс, который расширяет класс формы, и класс memento, чтобы выполнить откат атрибутов x и y формы.

У меня есть холст, и я рисую некоторые формы на нем. Перемещая одну фигуру, все в порядке. Я могу отменить этот шаг, установив память.

Проблема в том, что когда я группирую фигуры в составном объекте форм и перемещаю их, я не могу найти способ откатить действие перемещения, установив сувенир. Кто-нибудь знает как это сделать?

1 ответ

Было бы хорошо сохранить один Memento для одного определенного состояния всего холста, а не для отдельных фигур, которые находятся на холсте. Это Memento может быть одним составным объектом, который содержит неизменяемые объекты. Когда вы изменяете объект, вы не изменяете его свойства, а создаете новый с новыми свойствами и перестраиваете весь Memento с новой ситуацией.

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

Я не уверен, что это так понятно. Неизменность и один предмет для холста - важные вещи.

Другие вопросы по тегам