어떤 패턴인가?
- 객체 상태의 스냅샷을 만들어 나중에 복원할 수 있도록 해주는 패턴입니다.
 
어느 상황에 쓰일 수 있는 가?
- 비주얼 노벨 게임에서 게임 기록 혹은 이전 상태 복원 
 
- 뒤로 가기
 
- 플레이어의 진행 상황
 
샘플 코드
using System;
using System.Collections.Generic;
public class Memento
{
    public string State { get; private set; }
    public Memento(string state)
    {
        this.State = state;
    }
}
public class Originator
{
    public string State { get; set; }
    
    public Memento SaveStateToMemento()
    {
        return new Memento(State);
    }
    
    public void GetStateFromMemento(Memento memento)
    {
        State = memento.State;
    }
}
public class Caretaker
{
    private List<Memento> mementoList = new List<Memento>();
    public void Add(Memento state)
    {
        mementoList.Add(state);
    }
    public Memento Get(int index)
    {
        return mementoList[index];
    }
}
class Program
{
    static void Main(string[] args)
    {
        Originator originator = new Originator();
        Caretaker caretaker = new Caretaker();
        
        originator.State = "상태 #1";
        originator.State = "상태 #2";
        caretaker.Add(originator.SaveStateToMemento());
        originator.State = "상태 #3";
        caretaker.Add(originator.SaveStateToMemento());
        originator.State = "상태 #4";
        Console.WriteLine("Current State: " + originator.State);
        
        originator.GetStateFromMemento(caretaker.Get(0));
        Console.WriteLine("First saved State: " + originator.State);
        originator.GetStateFromMemento(caretaker.Get(1));
        Console.WriteLine("Second saved State: " + originator.State);
    }
}