SlideShare ist ein Scribd-Unternehmen logo
1 von 8
Паттерны
проектирования
Memento
«Хранитель»
Автор:
Вадим Зубович
Отдел автоматизации
Coherent Solutions
1
Паттерн Хранитель следует
применять, когда:
Необходимо

сохранить внутреннее
состояние объекта, для его последующего
восстановления.
Открытие

прямого доступа к сохраняемым
свойствам нарушит инкапсуляцию объекта и
позволит несанкционированно
манипулировать ими.
2
Структура:
Originator

(Создатель, хозяин)

Объект, имеющий внутреннее состояние, которое
необходимо сохранить.
Caretaker

(Опекун, посыльный)

Объект, вызывающий изменение внутреннего состояния
создателя и имеющий возможность сохранять и
восстанавливать его.
Memento

(Хранитель)

Объект, в котором сохраняется внутреннее состояние
создателя.

3
Реализация*
Пример:
Приложение, позволяющее перемещать точку на
форме, сохранять ее положение и восстанавливать
его.

*Код приложения по рассматриваемому примеру находится на TFS:
$/CSI - Training Center/Clients/Automation/OOP/DP/Memento

4
Рассмотрим код:
Интерфейс IOriginator
Класс Memento

Класс Caretaker
Класс Dot (Originator)
5
Недостатки:
Работает

только с однотипными классами (для
каждого Originator нужен свой Memento)
Не

позволяет сохранять последовательность
действий с разными объектами (для Undo/Redo
больше подходит паттерн Command
Не

готовит борщ

6
Что следует почитать:
●

●

●

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

Weitere ähnliche Inhalte

Mehr von ISsoft

Bdd and dsl как способ построения коммуникации на проекте
Bdd and dsl как способ построения коммуникации на проектеBdd and dsl как способ построения коммуникации на проекте
Bdd and dsl как способ построения коммуникации на проекте
ISsoft
 
Тестирование требований
Тестирование требованийТестирование требований
Тестирование требований
ISsoft
 
Тестирование требований
Тестирование требованийТестирование требований
Тестирование требований
ISsoft
 
Sql practise for beginners
Sql practise for beginnersSql practise for beginners
Sql practise for beginners
ISsoft
 
Отдел юзабилити
Отдел юзабилитиОтдел юзабилити
Отдел юзабилити
ISsoft
 
ToDoList
ToDoListToDoList
ToDoList
ISsoft
 
Prototype presentation
Prototype presentationPrototype presentation
Prototype presentation
ISsoft
 
решение основной проблемы Agile (scrum) проектов в контексте ba
решение основной проблемы Agile (scrum) проектов в контексте baрешение основной проблемы Agile (scrum) проектов в контексте ba
решение основной проблемы Agile (scrum) проектов в контексте ba
ISsoft
 
решение одной из ключевых проблем компетенции Ba специалистов
решение одной из ключевых проблем компетенции Ba специалистоврешение одной из ключевых проблем компетенции Ba специалистов
решение одной из ключевых проблем компетенции Ba специалистов
ISsoft
 
Development of automated tests for ext js based web sites
Development of automated tests for ext js based web sitesDevelopment of automated tests for ext js based web sites
Development of automated tests for ext js based web sites
ISsoft
 
Bdd or dsl как способ построения коммуникации на проекте
Bdd or dsl как способ построения коммуникации на проектеBdd or dsl как способ построения коммуникации на проекте
Bdd or dsl как способ построения коммуникации на проекте
ISsoft
 
инфотекс автоматизация тестирования
инфотекс   автоматизация тестированияинфотекс   автоматизация тестирования
инфотекс автоматизация тестирования
ISsoft
 
Sikuli script
Sikuli scriptSikuli script
Sikuli script
ISsoft
 
Планирование тестирования - релизные планы
Планирование тестирования - релизные планыПланирование тестирования - релизные планы
Планирование тестирования - релизные планы
ISsoft
 
Time management
Time managementTime management
Time management
ISsoft
 
Exploratory testing
Exploratory testingExploratory testing
Exploratory testing
ISsoft
 
Test Design Technics
Test Design TechnicsTest Design Technics
Test Design Technics
ISsoft
 
Monkey talk
Monkey talkMonkey talk
Monkey talk
ISsoft
 

Mehr von ISsoft (20)

Bdd j behave or cucumber jvm plus appium for efficient cross platform mobile ...
Bdd j behave or cucumber jvm plus appium for efficient cross platform mobile ...Bdd j behave or cucumber jvm plus appium for efficient cross platform mobile ...
Bdd j behave or cucumber jvm plus appium for efficient cross platform mobile ...
 
Bdd and dsl как способ построения коммуникации на проекте
Bdd and dsl как способ построения коммуникации на проектеBdd and dsl как способ построения коммуникации на проекте
Bdd and dsl как способ построения коммуникации на проекте
 
Тестирование требований
Тестирование требованийТестирование требований
Тестирование требований
 
Тестирование требований
Тестирование требованийТестирование требований
Тестирование требований
 
Sql practise for beginners
Sql practise for beginnersSql practise for beginners
Sql practise for beginners
 
Отдел юзабилити
Отдел юзабилитиОтдел юзабилити
Отдел юзабилити
 
ToDoList
ToDoListToDoList
ToDoList
 
ISTQB
ISTQBISTQB
ISTQB
 
Prototype presentation
Prototype presentationPrototype presentation
Prototype presentation
 
решение основной проблемы Agile (scrum) проектов в контексте ba
решение основной проблемы Agile (scrum) проектов в контексте baрешение основной проблемы Agile (scrum) проектов в контексте ba
решение основной проблемы Agile (scrum) проектов в контексте ba
 
решение одной из ключевых проблем компетенции Ba специалистов
решение одной из ключевых проблем компетенции Ba специалистоврешение одной из ключевых проблем компетенции Ba специалистов
решение одной из ключевых проблем компетенции Ba специалистов
 
Development of automated tests for ext js based web sites
Development of automated tests for ext js based web sitesDevelopment of automated tests for ext js based web sites
Development of automated tests for ext js based web sites
 
Bdd or dsl как способ построения коммуникации на проекте
Bdd or dsl как способ построения коммуникации на проектеBdd or dsl как способ построения коммуникации на проекте
Bdd or dsl как способ построения коммуникации на проекте
 
инфотекс автоматизация тестирования
инфотекс   автоматизация тестированияинфотекс   автоматизация тестирования
инфотекс автоматизация тестирования
 
Sikuli script
Sikuli scriptSikuli script
Sikuli script
 
Планирование тестирования - релизные планы
Планирование тестирования - релизные планыПланирование тестирования - релизные планы
Планирование тестирования - релизные планы
 
Time management
Time managementTime management
Time management
 
Exploratory testing
Exploratory testingExploratory testing
Exploratory testing
 
Test Design Technics
Test Design TechnicsTest Design Technics
Test Design Technics
 
Monkey talk
Monkey talkMonkey talk
Monkey talk
 

Memento