1 / 17

Memento Pattern

Design Patterns. http://www.devbg.org/patternscourse. Memento Pattern. Галин Илиев MCSD.NET . iliev@galcho.com. TSCG www.wordassist.com. Съдържание. Проблем Структура на шаблона Примерна реализация Въпроси при реализацията За и против шаблона Упражнения. Проблем.

ike
Download Presentation

Memento Pattern

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Design Patterns http://www.devbg.org/patternscourse Memento Pattern Галин Илиев MCSD.NET iliev@galcho.com TSCG www.wordassist.com

  2. Съдържание • Проблем • Структура на шаблона • Примерна реализация • Въпроси при реализацията • За и против шаблона • Упражнения

  3. Проблем • Запазване на състоянието на обект • Възстановяване на състоянието на по-късен етап • Не се нарушава капсулацията на данните

  4. Проблем

  5. Проблем

  6. Структура на шаблона

  7. Структура на шаблона • Участващи обекти са: • Спомен (Memento) • Запазва вътрешното състояние на обекта Създател • Предоставя достъп само на обекти от типа Създател • Създател (Originator) • Създава обект Спомен, съдържащ “снимка” на състоянието • Използва обект Спомен, за да въстанови предишното състояние

  8. Структура на шаблона • Уредник(Caretaker) • Отговорен е за съхранението на съдържанието на обекта Спомен • Не обработва или достъпва съдържанието на обекта Спомен

  9. Примерна реализация • Идентифициране на обектите • MementoBase – абстрактен клас • Memento – конкретен клас • SalesProspect – Създател (Originator) • ProspectMemory – Уредник(Caretaker)

  10. Примерна реализация public abstract class MementoBase { public abstract MementoBase SetState(object State); public abstract object GetState(); } class SalesProspect { private class Memento : MementoBase { public override object GetState() { ArrayList al = new ArrayList(3); al.Add(this.name);

  11. Примерна реализация al.Add(this.phone); al.Add(this.budget); return al; } public override MementoBase SetState(object state) { ArrayList al = (ArrayList)state; if (al.Count != 3) throw new ArgumentException("State doesn't have expected number of members!", "state"); this.name = al[0].ToString(); this.phone = al[1].ToString(); this.budget = double.Parse(al[2].ToString()); return this; }

  12. Демонстрация #1 • Примерeна реализация на шаблона “Спомен”

  13. Въпроси при реализацията • Поддръжка на два интерфейса • Широк - за Създател (Originator) • Тесен – за останалите • Инкрементално съхранение на промените • Неизвестен размер на обекта Уредник (Caretaker)

  14. За и против шаблона • Запазва капсулацията на данните • Елиминира нуждата от копиране на целия обект с цел запазване на състоянието • Подсигуряване чрез имплементацията (readonly properties) • Опростява обекта Създател (Originator)

  15. За и против шаблона • Логиката по съхранение се прехвърля в обекта Уредник(Caretaker) • Трябва да предостави два интерфейса • За обекта Създател • За другите обекти • Може да заеме много памет

  16. Шаблон “Спомен”(Memento) Въпроси?

  17. Използвана литература • Ерик Гама, Ричард Хелм, Ралф Джонсън, Джон Влисидес, Шаблони за дизайн, СофтПрес, 2005, ISBN 954-685-352-6 • Mementos, Marc Clifton , www.codeproject.com • http://www.dofactory.com/Patterns/Patterns.aspx

More Related