备忘录模式小结

x33g5p2x  于2022-02-20 转载在 其他  
字(0.5k)|赞(0)|评价(0)|浏览(157)

备忘录模式是在不破坏封装的原则下,捕获一个对象的状态,在对象之外保存这个状态,在必要时恢复到这个状态。

应用场景主要是将状态恢复到之前,例如Ctrl+Z的恢复,游戏从存档重新开始,JDBC事务控制。

备忘录模式的主要角色有三个:

Originator,发起人,职责是发起一次存档,将自身的状态存放到Memeto里面;

Memento,备忘录,存储Originator的状态;

Caretaker,负责人,负责保存好备忘录,不能对备忘录的内容进行操作和访问,只能够将备忘录传递给其他对象。

个人理解,Memento可以看作是Originator的一个副本,最简单的不用模式的方法,就是在Originator实现Clone接口,使用时Clone一个副本出来。

示例代码:

客户端调用:

运行结果:

优点:

· 提供了状态的恢复机制

· 提供了状态保存状态的方法,用户不需要关心状态的保存实现

缺点:

· 消耗资源

应用场景:

备忘录模式又叫快照(snapshot)模式,因此可以用于需要保存某一时刻的状态的场景。

此外, 如果用一个接口来让其他对象得到这些状态,将会暴露对象的实现细节并破坏对象的封装性,一个对象不希望外界直接访问其内部状态,通过负责人可以间接访问其内部状态。

相关文章

微信公众号

最新文章

更多