Я читал на память шаблон из разных источников в Интернете. Различия в информации из разных источников привели меня в замешательство относительно того, почему эта модель действительно необходима.
Реализация dofactory говорит, что основной целью этого шаблона является восстановление состояния системы.
Вики говорит, что основное намерение состоит в том, чтобы иметь возможность восстановить изменения в системе. Это дает другое влияние, говоря о том, что система может иметь реализацию memento без необходимости восстановления. И эта способность восстановления является особенностью этого.
OODesign говорит, что
Иногда необходимо зафиксировать внутреннее состояние объекта в некоторый момент и иметь возможность восстановить объект в это состояние позднее. Такой случай полезен в случае ошибки или сбоя.
Итак, мой вопрос: почему именно мы используем этот? Это для того, чтобы спасти предыдущие штаты - или способствовать инкапсуляции между Смотрителем и Мементом? Почему этот тип инкапсуляции так важен?
Изменить: Для тех, кто посещает, проверьте эту реализацию!
Редактировать : я работаю в реализации памятного решения моей проблемы. Я опубликую еще один вопрос относительно этого и свяжу этот вопрос с этим. Спасибо всем за ответы с ценными предложениями!
Редактировать 3 : Вот ссылка на мой пример реализации
источник
Сам по себе шаблон Memento используется только для захвата и сохранения состояний. Инкапсуляция существует только для защиты состояний от остальной части системы - как только состояние захвачено, его необходимо тщательно контролировать. Например, не имеет смысла иметь возможность изменять предыдущее состояние после его сохранения (это изменило бы историю), и может не иметь смысла просто возвращаться в предыдущее состояние одного объекта, не затрагивая другие (чтобы предотвратить система от входа в полностью недействительное состояние).
Самое распространенное использование Memento, которое я видел, это поддержка отмены функций. Это также связано с сохранением функциональности повтора путем перемещения назад во времени.
источник
Все эти определения направляют вас в одном направлении; все они говорят, что смысл в том, чтобы иметь возможность восстановить что-то в своем прежнем состоянии. Это может быть что-то целое или просто один объект.
Этот шаблон полезен, если запись изменяет состояние с течением времени, но у вас есть деловое требование, чтобы иметь возможность восстановить ее в любое предыдущее состояние в любое время. Или, в качестве альтернативы, если вам нужно иметь возможность просматривать записи, как это было в любой предыдущий момент времени. Эти типы требований очень распространены во многих типах систем.
источник