您的位置:首页 > 其它

备忘录模式小议

2009-06-12 09:55 260 查看
备忘录设计模式是用来对一个对象在不破坏其封装性的前提下,也就是说,在不对外暴露其内状态的情况下,通过一个备忘录类来记录其状态,然后再通过一个caretaker管理类来保存对备忘录类的列表引用来保持该类的各个时期的信息的,然后,在以后,可以很方便的将该对象的状态回退到以前的某个状态。

备忘录模式中,最最主要的类有三个。 原始类,也就是需要保持其状态信息的那个类,比如说:Pepole类,假设该类的属性name,和age是不断变化的(只是假设). 我们需要把在这个变化过程中的pepole类的各个时期的name和age属性的值保存起来,以便日后恢复。 那么,我们首先需要在pepole类中写上setName(),setAge()方法,最重要的是saveToMenoto()和restoreFromMenoto(Object o)这两个方法。 我们在saveToMenoto()方法中, 通过把people类的那些需要保存的那些属性的值放入menoto类来构造一个menoto类的实例,并且返回该实例。这样,这个实例就保存了此刻people类的状态信息。 在caretaker类中,通过内部的list列表的,add()方法,并且将刚才返回的menoto类的实例作为参数来将含有状态信息的menoto类放入list列表中。这样,我们就保存了该状态。

在需要恢复状态的时候, 通过caretaker类的get(int index)方法获取具体的状态实例,然后将得到的实例对象作为people类的restoreFromMenoto(Object o)的参数,在restoreFromMenoto(Object o)方法内部,将Object对象转化为具体的menoto类,然后,通过访问menoto类的getName(),getAge()方法来获取以前保存的状态的值,并且赋值给相应的属性来达到恢复状态的目的。

这样,在这主要的三个对象中,menoto类是作为pepole类的一个辅助类来保存pepole类的状态信息的,达到了将pepole类的状态信息保存在别处的目的,同时,作为状态管理类的caretaker类只是维护了一个menoto对象的列表,并且只能add和get该menoto对象的实例,不可以访问menoto类的get和set方法( 在pepole类中则可以访问这些方法。),所以保持了pepole类的状态信息的封装性。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: