언린이 2021. 11. 16. 10:38

Memento 패턴은 객체의 상태 정보를 가지는 클래스를 따로 생성하여, 객체의 상태를 저장하거나 이전 상태로 복원할 수 있게 해주는 패턴입니다.

 

 

구조

  • Originator
    • Memento 객체와 Memento 객체 상태를 복원하는 Caretaker 객체에 상태를 만들고 저장하는 클래스입니다.
  • Memento
    • Originator의 상태 정보를 저장하는 클래스입니다.
  • Caretaker
    • Originator의 저장과 복원을 제어하는 클래스입니다.
    • 각 시점의 Memento 객체들을 저장하는 Stack 자료구조를 가지고 있습니다.

 

 

활용 상황

  • 객체를 이전의 상태로 복구시켜야 하는 경우가 존재할때 유용합니다.

 

 

Memento 패턴의 장단점

  • 장점
    • 저장된 상태를 핵심 객체와는 다른 별도의 객체에 보관하기 때문에 안전합니다.
    • 핵심 객체의 데이터를 계속해서 캡슐화된 상태로 유지할 수 있습니다.
    • 복구 기능을 구현하기 쉽습니다.
  • 단점
    • 상태를 저장하고 복구하는데 시간이 오래 걸릴 수 있습니다.