《设计模式Design Pattern》读书笔记之十六

《设计模式Design Pattern》读书笔记之十六

Memento模式

结构

 

目的

为了可以把一个对象恢复到以前的状态,却不想公开内部状态使得封装性被破坏。

 

优点

1,  通过把originator的内部状态保存到memento,而不是直接把内部状态公开,保持了originator的封装性。因为memento有两种接口,宽(wide)的接口只会被originator使用,使得别人不能访问这些内部状态。而caretaker只能看到memento的窄(narrow)的接口 -- 它只能把memento传递给其他对象(originator)。在C++中,这可以通过把originator设计成mementofriend class,把那些memento的不应该公开的接口设计成private函数。

2,  通过把originator的内部状态保存到外部的memento,而不是originator自己来保存,使得设计简单而易于理解。

 

缺点

如果需要把大量的数据从originator拷贝到memento,则可能会使得成本很大。

如果memento的创建和传回给originator是一个可以预见的有次序的过程,那么保存在memento里面的信息可以仅仅是那些发生了改变的数据(incremental change),而不必是整个originator的内部信息的完全拷贝。比如command模式中的History List,可以为每个command产生的memento只保存incremental change

 

 

 

参考资料

Design Pattern  Gang-Of-4  1997

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值