备忘录模式

//在不破坏封装性的前提下,捕获一个对象的内部状态,并在该对象之外保存这个状态。这样以后就可将该对象恢复到原先保存的状态。

using System;
using System.Web;

public partial class DesignPattern_Memento : System.Web.UI.Page
{
    protected void Page_Load(object sender, EventArgs e)
    {
        GameMU g = new GameMU();
        g.Blood = 100;
        g.Magic = 100;
        g.Blood -= 20;
        g.OutPrint();
        SaveDoc save1 = g.Save();
        g.Blood -= 20;
        g.Magic -= 40;
        g.OutPrint();
        SaveDoc save2 = g.Save();
        g.Blood = 0;
        g.OutPrint();
        g.PickOutSave(save2);
        g.OutPrint();
        g.PickOutSave(save1);
        g.OutPrint();
    }
}

public class GameMU
{
    private int _Blood;
    public int Blood//血
    {
        get { return _Blood; }
        set { _Blood = value; }
    }

    private int _Magic;
    public int Magic//魔
    {
        get { return _Magic; }
        set { _Magic = value; }
    }

    public SaveDoc Save()//存档
    {
        HttpContext.Current.Response.Write("<br>存档");
        return new SaveDoc(Blood, Magic);
    }

    public void PickOutSave(SaveDoc save)//取档
    {
        HttpContext.Current.Response.Write("<br>取档");
        Blood = save.Blood;
        Magic = save.Magic;
    }

    public void OutPrint()
    {
        HttpContext.Current.Response.Write("<br>当前血:"+Blood.ToString()+"当前魔法"+Magic.ToString());
        if (Blood == 0)
        {
            HttpContext.Current.Response.Write("Game Over");
        }
    }
}

public class SaveDoc
{
    private int _Blood;
    public int Blood//血
    {
        get { return _Blood; }
    }

    private int _Magic;
    public int Magic//魔
    {
        get { return _Magic; }
    }

    public SaveDoc(int Blood, int Magic)
    {
        _Blood = Blood;
        _Magic = Magic;
    }


}

posted @ 2008-11-05 15:49  游侠_1  阅读(136)  评论(0编辑  收藏  举报