`
dr2tr
  • 浏览: 142292 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

Design Patterns -- Memento

阅读更多

The intent of the Memento Pattern is to provide storage and restoration of an object's state.  In Design Patterns(GoF) , the intent of the Memento Pattern is stated as "Without violating encapsulation, capture and externalize an object's internal state so that the object can be restored to this state later". A memento is a tiny repository that saves an object's state. see UML:

<o:p></o:p>

<v:shapetype o:spt="75" coordsize="21600,21600" filled="f" stroked="f" id="_x0000_t75" path="m@4@5l@4@11@9@11@9@5xe" o:preferrelative="t"><v:stroke joinstyle="miter"></v:stroke><v:formulas><v:f eqn="if lineDrawn pixelLineWidth 0"></v:f><v:f eqn="sum @0 1 0"></v:f><v:f eqn="sum 0 0 @1"></v:f><v:f eqn="prod @2 1 2"></v:f><v:f eqn="prod @3 21600 pixelWidth"></v:f><v:f eqn="prod @3 21600 pixelHeight"></v:f><v:f eqn="sum @0 0 1"></v:f><v:f eqn="prod @6 1 2"></v:f><v:f eqn="prod @7 21600 pixelWidth"></v:f><v:f eqn="sum @8 21600 0"></v:f><v:f eqn="prod @7 21600 pixelHeight"></v:f><v:f eqn="sum @10 21600 0"></v:f></v:formulas><v:path o:extrusionok="f" o:connecttype="rect" gradientshapeok="t"></v:path><o:lock v:ext="edit" aspectratio="t"></o:lock></v:shapetype><v:shape o:spid="_x0000_i1025" id="Image19" type="#_x0000_t75" alt="" style="WIDTH: 331.8pt; HEIGHT: 117.6pt"><v:imagedata o:href="http://www.dofactory.com/Patterns/Diagrams/memento.gif" src="file:///C:\DOCUME~1\YONGHU~1.PAN\LOCALS~1\Temp\msohtml1\01\clip_image001.gif"></v:imagedata></v:shape><o:p></o:p>

some description:<o:p></o:p>

  • Memento  (Memento) <o:p></o:p>
    • stores internal state of the Originator object. <o:p></o:p>
    • protect against access by objects of other than the originator. Mementos have effectively two interfaces. Caretaker can only pass the memento to the other objects. And ideally, only the originator that produces the memento would be permitted to access the memento's internal state. <o:p></o:p>
  • Originator  (SalesProspect) <o:p></o:p>
    • creates a memento containing a snapshot of its current internal state. <o:p></o:p>
    • uses the memento to restore its internal state <o:p></o:p>
  • Caretaker  (Caretaker) <o:p></o:p>
    • is responsible for the memento's safekeeping <o:p></o:p>
    • never operates on or examines the contents of a memento. <o:p></o:p>

The object(memento) which is to be persisted across session(object seralization)  should implement Serializable interface and the some fields initialed from files(like images) can be decleared as transient to so that these fields needn't to be saved  when persistance.<o:p></o:p>

On the other hand, memento can be persisted using String. This is suitable for the context that data should be able to be modified outside the system.<o:p></o:p>

At last , the words below are referred:"<o:p></o:p>

Rules of thumb <o:p></o:p>

"<o:p></o:p>

ref: http://pages.cpsc.ucalgary.ca/~kristen/index.shtml<o:p></o:p>

<o:p> </o:p>

 

分享到:
评论

相关推荐

    Pro-Objective-C-Design-Patterns-for-iOS

    《Pro-Objective-C-Design-Patterns-for-iOS》是一本专注于在iOS平台上利用Objective-C语言实现设计模式的专业书籍。书中旨在帮助已经有一定Cocoa开发基础的开发者,通过掌握设计模式的实践应用,提升软件开发的生产...

    GOF-设计模式-Design Patterns-英文原版-高清-有目录-有页码

    **设计模式**(Design Patterns)是软件工程中的一个重要概念,它是一套被反复使用、多数人知晓的、经过分类编目的、代码设计经验的总结。本章节将从多个角度对设计模式进行深入探讨。 #### 二、设计模式的基本定义 ...

    (FLEX)Advanced ActionScript 3 with Design Patterns - 2006 (Adobe)

    - **(FLEX)Advanced ActionScript 3 with Design Patterns - 2006 (Adobe)** 本书标题明确了其主要内容:针对Flex平台的高级ActionScript 3编程,并结合了设计模式的应用。出版年份(2006)表明了此书首次面世的...

    DesignPatterns-master.zip

    - 备忘录模式(Memento):在不破坏封装的前提下,捕获一个对象的内部状态,并在该对象之外保存这个状态。 - 模板方法模式(Template Method):在一个方法中定义一个算法的骨架,而将一些步骤延迟到子类中。 - ...

    design-patterns-cpp-master.zip

    在"design-patterns-cpp-master.zip"这个压缩包中,我们可以期待找到C++实现的各种设计模式的代码示例。设计模式通常分为三大类:创建型模式、结构型模式和行为型模式。 1. 创建型模式: - 单例模式(Singleton)...

    yifanzheng-java-design-patterns-master_java_

    本资源"yifanzheng-java-design-patterns-master"是一个专注于Java设计模式的入门学习项目,作者承诺将持续更新,旨在帮助初学者和开发者更好地理解和应用这些模式。 设计模式通常分为三大类:创建型模式、结构型...

    Head-First-Design-Patterns-master设计模式官方源码

    22. 备忘录模式(Memento Pattern):备忘录模式在不破坏封装性的前提下,捕获一个对象的内部状态,并在该对象之外保存这个状态,以便以后恢复对象的状态。 23. 解构者模式(Flyweight Factory Pattern):与享元...

    Design_Patterns-Elements_of_Reusable_Object-Oriented_Software

    - **备忘录(Memento)**:在不破坏封装性的前提下,捕获一个对象的内部状态,并在该对象之外保存这个状态。 - **观察者(Observer)**:定义对象间的一种一对多的依赖关系,当一个对象的状态发生改变时,所有依赖于它的...

    Design.Patterns.Explained.Simply

    We've tried hard to avoid both of these categories with Design Patterns Explained Simply. This book is fast and simple way to get the idea behind each of the 29 popular design patterns. The book is ...

    design patterns elements of reusable object-oriented software

    ★附录A介绍了剩下的设计模式:Bridge(桥接)、Builder(生成器)、Chainof Responsibility(责任链)、Flyweight(蝇量)、Interpreter(解释器)、Mediator(中介者)、Memento(备忘录)、Prototype(原型)、...

    Java-Design-Patterns

    包括责任链(Chain of Responsibility)、命令(Command)、解释器(Interpreter)、迭代器(Iterator)、中介者(Mediator)、备忘录(Memento)、观察者(Observer)、状态(State)、策略(Strategy)、模板方法...

    设计模式专题,共 23 种设计模式。GOF design patter-java-design-patterns.zip

    设计模式是软件工程中的一种最佳实践,用于解决在软件开发过程中常见的问题。这些模式是由GoF(Gang of Four)在...在Java设计模式的实践中,可以通过`java-design-patterns-main`这个项目进一步探索和应用这些模式。

    IT十年经典书系列英文版-Design_Patterns-Elements_of_Reusable_Object-Oriented_Software.pdf

    - 备忘录(Memento):在不破坏封装性的前提下,捕获一个对象的内部状态,并在该对象之外保存这个状态。 - 观察者(Observer):定义对象间的一种一对多的依赖关系,当一个对象的状态发生改变时,所有依赖于它的...

    《Java Design Patterns》高清完整英文PDF版

    Chapter 13: Memento Patterns Chapter 14: State Patterns Chapter 15: Builder Patterns Chapter 16: Flyweight Patterns Chapter 17: Abstract Factory Patterns Chapter 18: Mediator Patterns Chapter 19: ...

    整理 - 设计模式(Design Patterns)- 整理 Word版本

    "整理 - 设计模式(Design Patterns)- 整理 Word版本" 提供了一个关于设计模式的详细文档,可能包含了设计模式的基本分类、定义、动机、结构以及使用场景。设计模式通常分为三类:创建型模式(Creational Patterns...

    Design-patterns-TDTU:设计模式

    在"Design-patterns-TDTU"这个压缩包中,我们可能找到了一个关于设计模式的学习资源或项目,尽管没有具体的标签提供更多的上下文信息。通常,设计模式的学习会涵盖以下主要类别: 1. 创建型模式:这类模式关注对象...

    archlinux.java-design-patterns-git

    标题“archlinux.java-design-patterns-git”暗示了这个压缩包可能包含了在Arch Linux操作系统上关于Java设计模式和Git版本控制的资源。描述同样简洁,没有提供额外信息,但我们可以根据标签“Shell”推测,其中可能...

Global site tag (gtag.js) - Google Analytics