1. 정의
- 객체의 상태를 캡슐화한다.
2. 예시
- 임시적으로 게임 머니를 200 추가하고, 복구한다.
3. 그림
4. 클래스 다이어그램
5. 코드
public class Client {
public static void main(String[] args){
Game game = new Game();
System.out.println(game.tmpAddMoney(200));
System.out.println(game.restore().money);
}
}
public class Game {
GameMemento memento;
public Game() {
memento = new GameMemento(100, 100, 0);
}
public int tmpAddMoney(int money){
return memento.money + money;
}
public GameMemento restore(){
return memento.restore();
}
}
public class GameMemento {
int hp, mp, money;
public GameMemento(int hp, int mp, int money) {
this.hp = hp;
this.mp = mp;
this.money = money;
}
public GameMemento restore(){
return this;
}
}
https://github.com/kang-seongbeom/design_pattern
💡 Github에서 디자인 패턴 코드를 볼 수 있습니다.
6. 설명
- 모든 상태를 GameMemento에 저장하여 사용한다.
- 상태를 캡슐화하여 저장할 수 있다.
- 상태 저장 및 복구에 시간이 오래 걸리 수 있다.
'디자인 패턴' 카테고리의 다른 글
디자인 패턴 - 비지터 패턴(Visitor Pattern) (0) | 2022.11.18 |
---|---|
디자인 패턴 - 프로토타입 패턴(Prototype Pattern) (0) | 2022.11.18 |
디자인 패턴 - 중재자 패턴(Mediator Pattern) (0) | 2022.11.18 |
디자인 패턴 - 플라이웨이트 패턴(Flyweight Pattern) (0) | 2022.11.18 |
디자인 패턴 - 빌더 패턴(Builder Pattern) (0) | 2022.11.18 |