DesignPatterns에서 BehavioralPatterns의 하나
현재의 객체의 상태를 기록하여 보존, undo, redo, history, snapshot등이 가능하다. 객체의 내부상태를 가능한 공개하지 않고 객체의 상태를 보존하는것이 핵심
Structure
Example
주사위게임 MementoDiceGame.java
- 주사위에 따라 돈/과일을 받는다.
- 1 : 100 만큼 돈 증가
- 2 : 1/2 로 돈 감소
- 6 : 과일을 받는다. (랜덤하게 delicious fruit or nomal fruit)
- 돈이 증가하면, 현상태 기억 (기억할때 과일은 delicious만 기억)
- 돈이 1/2로 줄어들면, 기억되어있는것으로 대체
- main에서 memento를 new로 만들지 않는다. 즉 memento와 느슨한 연결
- memento는 public이 getMoney단 하나이다.
- 여러개의 memento도 만들수 있다.