0

Я пишу программу, которая использует MVC и шаблон команды. В моем конкретном классе команд мне нужно сохранить предыдущее состояние модели, чтобы я мог реализовать функциональность отмены/повтора.Почему моя переменная обновляется?

Я сохраняю ссылку на модель в объекте команды, когда она создана, и я храню ссылку на состояние, которое мне нужно сохранить: this.prevState = model.getState();

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

ответ

0

Я думаю (потому что я не знаю, на каком языке вы используете), что вы храните ссылку (как указатель), которая похожа на зеркало, вы можете видеть и изменять то, на что ссылаются, потому что вы храните направление. И некоторый язык программирования этот процесс невидим (Javascript, Java ...), так что я мог бы искать (опять же, потому что я не знаю, какой язык вы используете) - это то, что называется Creation by Copy или Initalization посредством Copy или Конструктор по Copy (я из Испании, так что я не знаю точный перевод), что-то вроде этого:

var olderState = new State(stateToSave); 

http://en.wikipedia.org/wiki/Object_copy

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

Надеюсь, это сработает для вас!

Смежные вопросы