十八、设计模式-备忘录模式(Memento)

备忘录模式是一种设计模式,用于在不破坏对象封装性的同时,保存并恢复对象的内部状态。通过创建一个备忘录类来存储原发器对象的关键状态,在需要时可以利用备忘录恢复对象到先前的状态。这种模式强调信息隐藏和封装,现代编程语言中通常使用序列化技术来高效实现备忘录模式。
摘要由CSDN通过智能技术生成

1、动机

      在软件构建过程中,某些对象的状态在转换过程中,可能由于某种需要,要求程序能够回溯到对象之前处于某个点时的状态。如果使用一些共有接口来让其他对象得到对象的状态,便会暴露对象的细节。

      如何实现对象状态的良好保存与恢复?但同时又不会因此而破坏对象本身的封装性。

2、备忘录模式定义

      在不破坏封装性的前提下,捕获一个对象的内部状态,并在该对象之外保存这个状态。这样就可以在以后将该对象恢复到原先保存的状态。

3、举例

      写一个类Memento用来保存某个状态(这里假设只用字符串state就可以表示某种状态,实际它可能由多个参数或者结构体才能表示):

      再写一个类用来表示原始(正在使用)的状态:

     调用过程也简约明了,中途需要的时候用Memento来保存某一刻的状态,然后执行过程会改变当前state,最后在使用Memento恢复:

4、结构图

5、要点总结

(1)备忘录(Memento)存储原发器(Originator)对象的内部状态,在需要时恢复原发器状态

(2)Memento模式的核心是信息隐藏,即Originator需要向外界隐藏信息,保持其封装性。但同时又需要将状态保存到外界(Memento)

(3)由于现代语言(如JAVA、C#)运行时,都具有相当的对象序列化,因此往往采用效率较高、又较容易正确实现的序列化方案来实现Memento模式

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值