備忘錄模式 儲存進度
備忘錄模式 儲存進度
備忘錄模式 儲存進度
備忘錄模式 儲存進度
class GameRole
{
…
public RoleStateMemento SaveState()
{
return (new RoleStateMemento(vit, atk, def));
}
public void RecoveryState(RoleStateMemento memento)
{
this.vit = memento.Vitality;
this.atk = memento.Attack;
this.def = memento.Defense;
}
…
}
class RoleStateMemento
{
private int vit;
private int atk;
private int def;
public RoleStateMemento(int vit, int atk, int def)
{
this.vit = vit;
this.atk = atk;
this.def = def;
}
public int Vitality
{
get { return vit; }
set { atk = value; }
}
public int Attack
{
get { return atk; }
set { atk = value; }
}
public int Defense
{
get { return def; }
set { def = value; }
}
}
class RoleStateCaretaker
{
private RoleStateMemento memento;
public RoleStateMemento Memento
{
get { return memento; }
set { memento = value; }
}
}
static void Main(string[] args)
{
GameRole lixiaoyao = new GameRole();
lixiaoyao.GetInitState();
lixiaoyao.StateDisplay();
RoleStateCaretaker stateAdmin = new RoleStateCaretaker();
stateAdmin.Memnto = lixiaoyao.SaveState();
lixiaoyao.Fight();
lixiaoyao.StateDisplay();
lixiaoyao.RecoveryState(stateAdmin.Memnto);
lixiaoyao.StateDisplay();
Console.Read();
}
備忘錄模式缺點是角色狀態需要完整儲存到備忘錄物件中,
如果狀態資料很大,會消耗大量資源,因此非常耗記憶體。