Memento Design Pattern

 definition
 UML diagram
 participants
 sample code in C#



definition

Without violating encapsulation, capture and externalize an object's internal state so that the object can be restored to this state later.

Frequency of use:   low

UML class diagram


participants

    The classes and/or objects participating in this pattern are:

  • Memento  (Memento)
    • stores internal state of the Originator object. The memento may store as much or as little of the originator's internal state as necessary at its originator's discretion.
    • protect against access by objects of other than the originator. Mementos have effectively two interfaces. Caretaker sees a narrow interface to the Memento -- it can only pass the memento to the other objects. Originator, in contrast, sees a wide interface, one that lets it access all the data necessary to restore itself to its previous state. Ideally, only the originator that produces the memento would be permitted to access the memento's internal state.
  • Originator  (SalesProspect)
    • creates a memento containing a snapshot of its current internal state.
    • uses the memento to restore its internal state
  • Caretaker  (Caretaker)
    • is responsible for the memento's safekeeping
    • never operates on or examines the contents of a memento.

sample code in C#

This structural code demonstrates the Memento pattern which temporary saves and restores another object's internal state.

Show code

// Memento pattern -- Structural example




This real-world code demonstrates the Memento pattern which temporarily saves and then restores the SalesProspect's internal state.

Show code

// Memento pattern -- Real World example




This .NET optimized code demonstrates the same real-world situation as above but uses modern, built-in .NET features, such as, generics, reflection, object initializers, automatic properties, etc.

Show code

// Memento pattern -- .NET optimized




Need to know more?

    see what others are saying about the Memento pattern





  • Better Code
  • Better Career
  • Better Lifestyle


Design Pattern
FrameworkTM 3.5


 
C# and VB.NET


     Here's what you get:
  • Gang of Four Patterns
  • Head First Patterns
  • Enterprise Patterns
  • SOA Patterns

  • WPF Best Practices
  • WCF Best Practices
  • LINQ Best Practices

  • Model View Controller
  • Model View Presenter
  • Model View ViewModel

  • More...

Click here for details

-- Instant Access --
Instant Download