Skip to content
This repository was archived by the owner on Jan 13, 2021. It is now read-only.

Latest commit

 

History

History

Memento

Folders and files

NameName
Last commit message
Last commit date

parent directory

..
 
 

README.md

개요

객체의 상태 정보를 저장하고 사용자의 필요에 의하여 원하는 시점의 데이터를 복원할 수 있는 디자인 패턴 예를들어, 게임에서 세이브 기능을 제공해주고 싶을때 유용하게 상요할 수 있다. 주요 구성요소로는 Originator, Caretaker, Memento 3가지가 있다.

예제 코드

class Originator {
  private String state;

  public void set(String state) {
    this.state = state;
    System.out.println("Originator: Setting state to " + state);
  }

  public Memento saveToMemento() {
    System.out.println("Originator: Saving to Memento.");
    return new Memento(this.state);
  }

  public void restoreFromMemento(Memento memento) {
    this.state = memento.getSavedState();
    System.out.println("Originator: State after restoring from Memento: " + state);
  }
}

public static class Memento {
  private final String state;

  public Memento(String stateToSave) {
    state = stateToSave;
  }
  
  private String getSavedState() {
    return state;
  }
}
 
class Caretaker {
    public static void main(String[] args) {
      List<Originator.Memento> savedStates = new ArrayList<Originator.Memento>();

      Originator originator = new Originator();
      originator.set("State1");
      originator.set("State2");
      savedStates.add(originator.saveToMemento());
      originator.set("State3");
      savedStates.add(originator.saveToMemento());
      originator.set("State4");

      // 메멘토 패턴의 핵심
      originator.restoreFromMemento(savedStates.get(1));   
    }
}
  • 실행 결과
Originator: Setting state to State1
Originator: Setting state to State2
Originator: Saving to Memento.
Originator: Setting state to State3
Originator: Saving to Memento.
Originator: Setting state to State4
Originator: State after restoring from Memento: State3