Шаблон проектирования 'Хранитель' (Swift 4, Xcode 9)

preview_player
Показать описание
Хранитель (Memento) — поведенческий шаблон проектирования, который позволяет, не нарушая инкапсуляции, сохранить состояние объекта для последующего восстановления.

Если у вас есть аккаунт в LinkedIn, заходите в гости, добавляйтесь в друзья! Особая благодарность за подтверждение навыков у меня на странице:

Музыка:
The Spin Wires - Blackout Romeo Instrumental
Otis McDonald - Behind Closed Doors
Рекомендации по теме
Комментарии
Автор

Спасибо за видео!

Такой наглядный пример помог разобраться и понять паттерн

atlantatesla
Автор

Отличный шаблон и объяснил доходчиво! Особенно этот шаблон необходим тем, кто пишет под Андроид, сделал же Гугл подарок разработчикам с поворотом экрана ))
А вот с примером, как по мне, не очень и объясню почему. Новое состояние я бы поместил автоматически при поступлении новых данных в СТЕК (на ограниченное число состояний, память всё же не резиновая). И позволил бы бегать туда-сюда по всему стеку, если количество шагов выходит за диапазон, то возвращаем крайнее состояние, при превышении лимита стека, старое удаляем. Во всяком случае так работают все редакторы.

sergeybizunov
Автор

func redo(steps: Int) {

let newIndex = currentIndex + steps
guard newIndex < states.count else { return }

currentIndex = newIndex
painter.restore(state: states[currentIndex])
print("Redo \(steps) steps \(painter.description)")

}

MaximGolovlev