본문 바로가기

디자인 패턴

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

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에 저장하여 사용한다.
  • 상태를 캡슐화하여 저장할 수 있다.
  • 상태 저장 및 복구에 시간이 오래 걸리 수 있다.