ITPub博客

首页 > IT职业 > IT生活 > 记忆点(Memento) (转)

记忆点(Memento) (转)

原创 IT生活 作者:amyz 时间:2007-11-16 18:26:49 0 删除 编辑
记忆点(Memento) (转)[@more@]

 

很多情况下在我们改变了很多东西的时候。却开始后悔了。也许这就是人类的软弱一面。不管怎么样人生是无法回到原点的。可是软体可以,因为一切运行的程序都是加载在内存中的。所以即使改变了,我们也是可以有办法回到原点的。我想你也许已经猜到我要说什么了吧?是的。Memento 模式。一个很简单的模式。
//原对象
public class Originator {

  public int number;
  public object myObject = null;
  private Memento myMemobject;
  public Originator(){}
 
  public Memento MemObject{
  get{
  return new Memento(this);
  }
  set{
  myMemobject=value;
  this.number=myMemobject.Number;
  this.myObject=myMemobject.O;
  }
  }
  }

//记忆点
[Serializable]
private class Memento : ISerializable {

  private int Number;

  private Object O = null;

  public Memento( Originator o){

    number = o.number;
    O = o.myObject;

  }

}

//调用实例
public class Client
  {
  public static int Main(string[] args)
  {   
 Originator o = new Originator();
  Memento  m=o.MemObject;
  //改变值
  o.number=100;
  o.myObject="object";
  //还原
  o.MemObject=m;
  return 0;
  }
  }

Memento中保存了Originator中的number和object的值. 通过调用Originator中number和object值改变的话,通过调用属性方法可以恢复.这样就满足了面向对象的原则.


来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/10752019/viewspace-982803/,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论
  • 博文量
    3984
  • 访问量
    7335630