记忆点(Memento)

王朝other·作者佚名  2006-01-08
宽屏版  字体: |||超大  

很多情况下在我们改变了很多东西的时候。却开始后悔了。也许这就是人类的软弱一面。不管怎么样人生是无法回到原点的。可是软体可以,因为一切运行的程序都是加载在内存中的。所以即使改变了,我们也是可以有办法回到原点的。我想你也许已经猜到我要说什么了吧?是的。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值改变的话,通过调用属性方法可以恢复.这样就满足了面向对象的原则.

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
© 2005- 王朝网络 版权所有