워드 프로세서를 작성하다 보면 실행 취소를 할 때가 있다. 실행 취소를 구현하려면 이전의 상태에 대한 정보를 일부 저장하고 있어야한다. 이럴때에 사용하는 패턴이 메멘토 패턴이다.
메멘토 패턴이란 객체의 상태 정보를 저장하고 이를 이용하여 복원할 수 있는 패턴이다.
Originator 클래스는 현재 state를 가지고, operation을 가지고 있는 클래스이다. 이 클래스만을 이용해 Memento 클래스에 접근할 수 있고 , 다른 클래스는 불가하다. 이는 friend 키워드의 이용으로 구현이 가능하다. 따라서 Memento 클래스의 생성과 접근은 오로지 이 Originator 클래스를 이용해서 해야한다. Memento의 인스턴스는 없으나 클래스를 참조하기 때문에 의존(Dependency)로 관계를 표현한다. (Association 연관 관계와 헷갈리지 않게 주의하자.)
Memento 클래스는 저장하고자 하는 state 정보를 담고 있다. data는 private이고 getState를 통해서만 접근 가능하다.
CareTaker 클래스는 Memento 클래스를 관리하는 클래스이다.