备忘录模式小议

备忘录设计模式是用来对一个对象在不破坏其封装性的前提下,也就是说,在不对外暴露其内状态的情况下,通过一个备忘录类来记录其状态,然后再通过一个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类的状态信息的封装性。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

walkingmanc

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值