備忘錄模式 儲存進度

備忘錄模式 儲存進度

備忘錄模式 儲存進度

備忘錄模式 儲存進度

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();

}

備忘錄模式缺點是角色狀態需要完整儲存到備忘錄物件中,

如果狀態資料很大,會消耗大量資源,因此非常耗記憶體。