class RunItem
{
public static void Run()
{
Planet planet = new Planet();
MementoMan man = new MementoMan();
planet.Change();
Console.WriteLine("State:" + planet.State);
man.plant = planet.SaveSate();
Console.WriteLine("SaveSate");
planet.Change();
Console.WriteLine("Change, State:" + planet.State);
man.plant.Recovery(planet);
Console.WriteLine("Recovery Sate");
Console.WriteLine("State:" + planet.State);
}
}
/// <summary>
/// 需要记录状态的对象
/// </summary>
class Planet
{
public int State = 0;
public void Change()
{
Random r = new Random(DateTime.Now.Millisecond);
this.State = r.Next();
}
public Memento SaveSate()
{
return new Memento(this.State);
}
}
/// <summary>
/// 备忘录
/// </summary>
class Memento
{
private int _state;
public Memento(int state)
{
_state = state;
}
public void Recovery(Planet p)
{
p.State = _state;
}
}
/// <summary>
/// 备忘录管理员
/// </summary>
class MementoMan
{
public Memento plant;
}