备忘录模式
//在不破坏封装性的前提下,捕获一个对象的内部状态,并在该对象之外保存这个状态。这样以后就可将该对象恢复到原先保存的状态。
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;
}
}