July 10, 2022
01.메멘토 패턴 적용하기
01.1 Game 코드 변경
01.2 Client 코드 변경
memento역할이 중요 상태를 저장할것은
public final class GameSave {
    private final int blueTeamScore;
    private final int redTeamScore;
    public GameSave(int blueTeamScore, int redTeamScore) {
        this.blueTeamScore = blueTeamScore;
        this.redTeamScore = redTeamScore;
    }
    public int getBlueTeamScore() {
        return blueTeamScore;
    }
    public int getRedTeamScore() {
        return redTeamScore;
    }
}before
import java.io.Serializable;
public class Game implements Serializable {
  private int redTeamScore;
  private int blueTeamScore;
  public int getRedTeamScore() {
      return redTeamScore;
  }
  public void setRedTeamScore(int redTeamScore) {
      this.redTeamScore = redTeamScore;
  }
  public int getBlueTeamScore() {
      return blueTeamScore;
  }
  public void setBlueTeamScore(int blueTeamScore) {
      this.blueTeamScore = blueTeamScore;
  }
}after
public class Game {
  private int redTeamScore;
  private int blueTeamScore;
  public int getRedTeamScore() {
      return redTeamScore;
  }
  public void setRedTeamScore(int redTeamScore) {
      this.redTeamScore = redTeamScore;
  }
  public int getBlueTeamScore() {
      return blueTeamScore;
  }
  public void setBlueTeamScore(int blueTeamScore) {
      this.blueTeamScore = blueTeamScore;
  }
  public GameSave save() {
      return new GameSave(this.blueTeamScore, this.redTeamScore);
  }
  public void restore(GameSave gameSave) {
      this.blueTeamScore = gameSave.getBlueTeamScore();
      this.redTeamScore = gameSave.getRedTeamScore();
  }
}before
public class Client {
  public static void main(String[] args) {
      Game game = new Game();
      game.setRedTeamScore(10);
      game.setBlueTeamScore(20);
      int blueTeamScore = game.getBlueTeamScore();
      int redTeamScore = game.getRedTeamScore();
      Game restoredGame = new Game();
      restoredGame.setBlueTeamScore(blueTeamScore);
      restoredGame.setRedTeamScore(redTeamScore);
  }
}after
public class Client {
  public static void main(String[] args) {
      Game game = new Game();
      game.setBlueTeamScore(10);
      game.setRedTeamScore(20);
      GameSave save = game.save();
      game.setBlueTeamScore(12);
      game.setRedTeamScore(22);
      game.restore(save);
      System.out.println(game.getBlueTeamScore());
      System.out.println(game.getRedTeamScore());
  }
}