设计模式之备忘录模式

年少之时,酷爱单机,无奈技术不成,命途多舛,幸亏有读/存档之功能,才有幸通关。今日看到此设计模式,感触良多,故列为首发。

什么是备忘录模式?

    不知道大家是否看到星爷的一部经典之作——《大话西游》。
    电影描绘了孙悟空,唐僧,紫霞仙子,白晶晶,牛魔王500多年的爱恨情仇,诸种事端。每次重温一遍电影,都会有不同的感受。其中,一件宝物在这个电影中起着穿针引线的作用,那就是——月光宝盒。
    月光宝盒,能够穿越时空,回到过去的时光弥补遗憾,真不愧宝物之名。但宝物虽好,却不能遂人意,回到我们想要去的时光。在《大话西游之月光宝盒》中,每一次穿越都差强人意,最后一次穿越更是开了个大玩笑,也正因为如此,电影情节才会如此精彩。
    
    我要分享的这篇设计模式——备忘录模式就是升级版的“月光宝盒”,能够让我们回到我们想回的时光,不再追悔莫及。


备忘录模式是一种软件设计模式:在不破坏封闭的前提下,捕获一个对象的内部状态,并在该对象之外保存这个状态。这样以后就可将该对象恢复到原先保存的状态。

设计模式之备忘录模式_第1张图片
自我理解,根据图示:

  1. 客户端触发时间,将数据传送到备忘录。
  2. 备忘录进行储存并命名。
  3. 将备忘录存放到备忘录集,即管理者。
  4. 客户端恢复存档,读取备忘录集即可。
        
        

什么时候用备忘录模式?

有时一些发起人对象的内部信息必须保存在发起人对象以外的地方,但是必须要由发起人对象自己读取,这时,使用备忘录模式可以把
复杂的发起人内部信息对其他的对象屏蔽起来,从而可以恰当地保持封装的边界。

模拟情景:我今天很不开心,表白别人被拒绝了,我想要把这件事记录下来长个记性、留个回忆,但又不想被别人知道,只允许我自己回味。于是,我买了个带加锁功能的笔记本,将今天发生的东西记录下来,密码只有我知道。看到这篇日记,我觉得我可以回到过去,重新做一次选择(YY而已,但设计模式真的可以让你回去)。
    

备忘录模式的缺点:

缺点一:数据设计不当。若备份的数据不足以让情况改变,那么我们的备份有可能无效。

例:关于真爱问题的大讨论。好多人说,爱情最好的状态是在合适的地点,合适的时间,遇到的合适的人。然而我觉得光遇到还不行,还得用合适的方法(在最好的状态下,合适的方法才有意义)。

    如果我们没有用合适的方法导致表白失败了,我们会想到用备忘录模式。重新来一次。

    假设我们用设计模式保存好了合适的时间,合适的人,但是合适的地点没有备份,那么我们就回不到爱情最好的那个状态了。既然回不到最好的状态,那么合适的方法也就无从谈起,一次绝佳的时机就此错过。

    
缺点二:需备份的数据大小不稳定。若需备份的数据过大,给用户造成大的存储负担。
        
    

注意事项

  1. 为了符合迪米特原则,还要增加一个管理备忘录的类。
  2. 为了节约内存,可使用原型模式+备忘录模式。

本文参考资料:

  1. 菜鸟教程
  2. 大话设计模式
  3. 百度百科

你可能感兴趣的:(设计模式)