《研磨设计模式》读书笔记之:备忘录模式、享元模式

前言:本篇系看完《研磨设计模式》一书的个人理解和总结,可能存在不正确的地方,看时需要持怀疑态度。另外,所有的图都是示意图,示意,示。

备忘录模式(Memento):

《研磨设计模式》读书笔记之:备忘录模式、享元模式_第1张图片

几点解释:

  1. 备忘录模式的目的在于在不破坏对象封装性的前提下,保存对象的部分或者全部的数据到对象之外,用于在需要的时候恢复对象到某一个备忘录的状态。
  2. 实现方式为 创建一个私有的内部类用于保存对象的数据,这个内部类会实现一个 窄接口(没有任何方法,标记用),外部调用 创建备忘录的方法时,只会得到 窄接口类型的引用,对于对象内部的数据无法访问和操作,这样就保证了封装性。
  3. 若是要保存整个对象的数据,则可以结合原型模式,使用克隆的方式来创建一个数据完全相同的新对象。此时内部类只需要保存新对象的一个引用即可。
  4. 保存是手段,恢复是目的。狭义的备忘录模式强调不破坏对象的封装性。

享元模式(Flyweight):

《研磨设计模式》读书笔记之:备忘录模式、享元模式_第2张图片

几点解释:

  1. 享元模式的本质在于将不变的部分分离出来并共享。实现功能的关键在于 通过享元工厂来获取相应的数据。
  2. 其实可以将享元工厂看作是单例的一种实现方式,先查询Map,没有的情况下创建保存并返回(需要做好并发控制)。
  3. 策略模式、状态模式都容易产生很多的细粒度的对象,这些对象往往是无状态的,可以结合享元模式,减少不必要的内存浪费。

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