메멘토 패턴이란 현재 객체의 상태를 저장했다가 나중에 꺼내는 패턴이라고 한다. 복잡하게 구현한 여러 예제들이 있었지만 이해가 되지 않아서 패스하고 그나마 간단한 것을 연습해 보았다.
1. 먼저 저장/복원할 대상이 될 클래스를 작성한다.
2. 이 대상 클래스의 저장을 위한 틀을 메멘토라고 부른다.
생성자를 이용해 대상 클래스를 받아 멤버에 저장하며 getter/setter를 정의한다.
3. 메멘토 클래스를 추가하고 꺼내는 저장소 역할을 하는 CareTaker 클래스를 작성한다.
4. 메멘토를 생성, 복원하고 대상 객체로 세팅하는 오리지네이터 클래스를 작성한다.
5. 이제 테스트 클래스를 작성해 보자.
결과:
...
Originator current state: Originator [animal=Animal [name=iguana, color=green, weight=1]]
Originator restoring to dog...
Originator current state: Originator [animal=Animal [name=dog, color=white, weight=5]]
5번 라인에서 Animal 객체를 생성하고 Caretaker를 통해서 생성한 메멘토 객체를 저장한다. 10번 라인에서 두 번째 Animal 객체를 생성해서 메멘토에 저장한다. 13번 라인에서 세 번째 Animal 객체를 메멘토에 저장한다. 이제 current 객체는 igana 임을 확인하 수 있다. 17번 라인에서 최초 저장한 메멘토로 복원한 후 18번 라인을 통해 dog 객체로 복원되었음을 알 수 있다.
댓글 영역