[디자인패턴]메멘토 패턴 (Memento Pattern)

Coffee Time☕·2021년 6월 5일
0

디자인 패턴

목록 보기
11/13

메멘토 패턴이란?

워드 프로세서를 작성하다 보면 실행 취소를 할 때가 있다. 실행 취소를 구현하려면 이전의 상태에 대한 정보를 일부 저장하고 있어야한다. 이럴때에 사용하는 패턴이 메멘토 패턴이다.

메멘토 패턴이란 객체의 상태 정보를 저장하고 이를 이용하여 복원할 수 있는 패턴이다.

메멘토 패턴 UML 다이어그램과 특징

Originator 클래스는 현재 state를 가지고, operation을 가지고 있는 클래스이다. 이 클래스만을 이용해 Memento 클래스에 접근할 수 있고 , 다른 클래스는 불가하다. 이는 friend 키워드의 이용으로 구현이 가능하다. 따라서 Memento 클래스의 생성과 접근은 오로지 이 Originator 클래스를 이용해서 해야한다. Memento의 인스턴스는 없으나 클래스를 참조하기 때문에 의존(Dependency)로 관계를 표현한다. (Association 연관 관계와 헷갈리지 않게 주의하자.)

Memento 클래스는 저장하고자 하는 state 정보를 담고 있다. data는 private이고 getState를 통해서만 접근 가능하다.
CareTaker 클래스는 Memento 클래스를 관리하는 클래스이다.

  • 메멘토 패턴의 단점은 객체의 생성을 자주 하거나 내부 정보가 많은 경우에는 메모리 cost가 expensive할 수 있다는 점이다.
  • iterator 패턴과 함께 사용하여 memento의 state를 탐색하는데 이용될 수 있다.
  • command 패턴과 유사하게 undo의 기능을 지원한다. 그렇지만 메멘토 패턴은 state를 되돌리고, command 패턴은 실행된 명령 자체를 되돌린다는 점에서 차이가 있다.

메멘토 패턴 예시

0개의 댓글