標籤:show over 管理器 manager == str mat ossh color
備忘錄模式主要用於存檔。遊戲中我們打boss前總會存檔,如果打boss失敗,則讀取存檔,重新挑戰boss。
可以看出來,備忘錄模式一般包括如下資料結構
1、 封存檔案:用於恢複備份情境的必要資料;
2、 存檔管理器:用於管理存檔,包括存檔的讀寫與展示;
3、 被存檔的對象。
下面以射擊遊戲的存檔來舉例:
1、 射擊選手
package com.coshaho.learn.memorandum;// 射擊手public class Shooter { // 血量 private int blood = 100; // 子彈數量 private int bullet = 100; // 射擊 public void shoot() { bullet = bullet - (int) (Math.random()*30); if(0 > bullet) { bullet = 0; } bossHurt(); } // boss傷害 private void bossHurt() { blood = blood - (int) (Math.random()*25); if(0 > blood) { blood = 0; } } public void show() { System.out.println("Shooter blood is " + blood + ", bullet is " + bullet + ‘.‘); } // 儲存 public Memorandum save() { return new Memorandum(blood, bullet); } // 載入 public void recovery(Memorandum memory) { if(null == memory) { return; } blood = memory.getBlood(); bullet = memory.getBullet(); }}
2、 封存檔案
package com.coshaho.learn.memorandum;// 存檔public class Memorandum { private int blood; private int bullet; public Memorandum(int blood, int bullet) { this.blood = blood; this.bullet = bullet; } public int getBlood() { return blood; } public int getBullet() { return bullet; }}
3、 存檔管理器
package com.coshaho.learn.memorandum;// 存檔管理器public class MemorandumManager { private Memorandum memory; public Memorandum getMemory() { return memory; } public void setMemory(Memorandum memory) { this.memory = memory; }}
4、 測試代碼
package com.coshaho.learn.memorandum;public class MemorandumTest { public static void main(String[] args) { MemorandumManager mmemoryManager = new MemorandumManager(); Shooter shooter = new Shooter(); shooter.shoot(); shooter.show(); mmemoryManager.setMemory(shooter.save()); shooter.shoot(); shooter.show(); shooter.recovery(mmemoryManager.getMemory()); shooter.show(); }}
Java設計模式應用——備忘錄模式