Your SlideShare is downloading. ×
Memento
Upcoming SlideShare
Loading in...5
×

Thanks for flagging this SlideShare!

Oops! An error has occurred.

×

Saving this for later?

Get the SlideShare app to save on your phone or tablet. Read anywhere, anytime - even offline.

Text the download link to your phone

Standard text messaging rates apply

Memento

133
views

Published on


0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total Views
133
On Slideshare
0
From Embeds
0
Number of Embeds
1
Actions
Shares
0
Downloads
2
Comments
0
Likes
0
Embeds 0
No embeds

Report content
Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
No notes for slide

Transcript

  • 1. Паттерны проектирования Memento «Хранитель» Автор: Вадим Зубович Отдел автоматизации Coherent Solutions 1
  • 2. Паттерн Хранитель следует применять, когда: Необходимо сохранить внутреннее состояние объекта, для его последующего восстановления. Открытие прямого доступа к сохраняемым свойствам нарушит инкапсуляцию объекта и позволит несанкционированно манипулировать ими. 2
  • 3. Структура: Originator (Создатель, хозяин) Объект, имеющий внутреннее состояние, которое необходимо сохранить. Caretaker (Опекун, посыльный) Объект, вызывающий изменение внутреннего состояния создателя и имеющий возможность сохранять и восстанавливать его. Memento (Хранитель) Объект, в котором сохраняется внутреннее состояние создателя. 3
  • 4. Реализация* Пример: Приложение, позволяющее перемещать точку на форме, сохранять ее положение и восстанавливать его. *Код приложения по рассматриваемому примеру находится на TFS: $/CSI - Training Center/Clients/Automation/OOP/DP/Memento 4
  • 5. Рассмотрим код: Интерфейс IOriginator Класс Memento Класс Caretaker Класс Dot (Originator) 5
  • 6. Недостатки: Работает только с однотипными классами (для каждого Originator нужен свой Memento) Не позволяет сохранять последовательность действий с разными объектами (для Undo/Redo больше подходит паттерн Command Не готовит борщ 6
  • 7. Что следует почитать: ● ● ● Design Patterns: Elements of Reusable Object-oriented Software, by Erich Gamma, Richard Helm, Ralph Johnson, John Vlissides, 1995 – “Gang of Four” http://cpp-reference.ru/patterns/behavioralpatterns/memento/ http://habrahabr.ru/sandbox/39499/
  • 8. Спасибо за внимание! Вадим Зубович 8