namespace 備忘錄模式 }
// 負責儲存originator物件的內部狀態,並可防止originator以外的其他物件,訪問備忘錄
class memento
}// 遊戲進度
class game
set
}private int gamescore; // 遊戲分數
public int gamescore
set
}private string username; // 使用者名稱
public string username
set
}}// 負責建立乙個備忘錄memento,用於記錄當前時刻的內部狀態,並可以使用備忘錄恢復內部狀態
class originator
// 發起人需要儲存內部狀態
public listgameplayers
// 建立備忘錄
public memento creatmemento()
// 將備忘錄中的資料備份匯入到遊戲中去
public void restorememento(memento memento)
public void show()
個玩家",gameplayers);
foreach (game per in gameplayers) // 遍歷每個玩家 記錄姓名,級別,分數等
級別: 分數:",per.username,per.gamelevel,per.gamescore);}}
}
}
呼叫:
class program
, new game() ,
new game()
}; originator originator = new originator(gameplayers);
originator.show();
// console.read();
console.writeline(「\r\n」);
// 建立備忘錄並儲存物件
caretaker caretaker = new caretaker();
caretaker.memento = originator.creatmemento();
// 更改originator列表
console.writeline(「—移除最後乙個玩家—」);
originator.gameplayers.removeat(2);
originator.show();
console.writeline(「\r\n」);
// 恢復到原始狀態
console.writeline(「—恢復玩家列表—」);
originator.restorememento(caretaker.memento);
originator.show();
console.readkey();
} }
總結:作者是小菜鳥一枚,如果有不對的地方,歡迎指正,希望共同學習,共同進步!
遊戲設計 備忘錄模式
備忘錄最常見在遊戲中的進度儲存,在打boss之前先儲存當前進度,當在打鬥中掛掉了,則從之前的進度中恢復,從而達到無限打boss,而打不死boss的死迴圈中,備忘錄模式 在不破壞封裝性的前提下,捕獲乙個物件的內部狀態,並在該物件外進行儲存,並能夠恢復到原先儲存狀態。所以,抽出來三個物件 origina...
設計模式之備忘錄模式
機器 public class machine public void startplay disc.setluminance 60 disc.settime 0 disc.setvolume 80 public void stopplay disc.setluminance 70 disc.set...
設計模式之備忘錄模式
定義 在不破壞封閉的前提下,捕獲乙個物件的內部狀態,並在該物件之外儲存這個狀態。這樣以後就可將該物件恢復到原先儲存的狀態。備忘錄模式有三個角色 以儲存遊戲進度為例,退出遊戲前存檔,再進入遊戲就會顯示退出之前的狀態。示例 遊戲發起人類 public class game public state cr...