Краткое резюме
В этом видео рассматривается паттерн проектирования "Memento" (Меморандум). Паттерн позволяет сохранять состояние объекта и восстанавливать его впоследствии. Примеры использования: отмена/повтор действий в редакторе, сохранение состояния игры.
- В видео демонстрируется реализация паттерна на TypeScript.
- Пример использования: текстовый редактор, где можно сохранять историю изменений.
Memento: Сохранение состояния объекта
В видео представлен пример реализации паттерна "Memento" на TypeScript. В качестве примера используется текстовый редактор, где можно сохранять историю изменений.
Класс Memento:
- Хранит состояние объекта.
- Имеет метод
getState()
, который возвращает сохраненное состояние.
Класс Originator (Текстовый редактор):
- Сохраняет свое состояние в объект Memento.
- Имеет методы
createMemento()
,setMemento(memento)
,getState()
.
Класс Caretaker (История редактора):
- Хранит список объектов Memento.
- Имеет методы
addMemento(memento)
,getMemento(index)
.
В видео демонстрируется, как можно использовать эти классы для сохранения и восстановления состояния текстового редактора.
Пример:
- Создается объект редактора и объект истории.
- В редактор вводятся три строки текста.
- Сохраняется состояние редактора в объект Memento и добавляется в историю.
- Выполняется отмена последнего действия (удаление последней строки).
- Выполняется еще одна отмена (удаление предпоследней строки).
В результате, после двух отмен, в редакторе остается только первая строка текста.