2017-02-08 21 views
-2

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

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

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

+0

memento? Вам нужен минимальный пример кода –

+0

Yup memento извините – user7537256

ответ

0

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

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

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

+0

Итак, что я должен сделать, это память для состояния холста, а не форма, которую нужно отменить, так что отмените отмену. Я верну старый холст вместо того, чтобы получить старую форму ? – user7537256

+0

Точно. Пока «отмена» касается всего холста, Memento также должен представлять содержимое всего холста. – pcjuzer