动机:有时采用纯粹面向对象方案导致系统中存在大量细粒度对象,带来很高的运行时代价——内存开销。如果避免大量细粒度对象问题,同时让客户程序能透明地使用面向对象特性进行操作?运用共享技术有效地支持大量细粒度的对象。具体做法是把少量的共享对象存储于对象池,大量对象对其进行引用。

应用:图文编辑器

场景:考虑文本编辑器,如果每个字符生成一个全新独立对象,将生成大量细粒度对象,该对象的某些属性对象全新生成将消耗大量内存,如字体属性。如果把这些字体对象放对象池中,字符对象对其进行引用将节省大量内存。


结构

设计模式学习笔记十一——Flyweight模式


代码实现

设计模式学习笔记十一——Flyweight模式namespace DesignPattern.Flyweight
}

设计模式学习笔记十一——Flyweight模式namespace DesignPattern.Flyweight
}


要点
1、本设计模式主要解决面向对象的代价问题,一般不触及面向对象的抽象性问题。
2、本模式通过共享对象来减少系统中对象个数,从而减少内存消耗。在具体实现时,要注意状态的处理。
3、根据实际情况评估对象数量巨大带来的性能影响,共享对象后对性能的影响。以判断是否需要使用此模式以及该把那些对象放共享对象池中。

相关文章:

  • 2021-09-16
  • 2022-03-04
  • 2021-10-04
  • 2021-08-05
  • 2021-04-17
  • 2022-01-23
  • 2021-07-15
猜你喜欢
  • 2021-09-27
  • 2021-12-15
  • 2022-02-23
  • 2022-12-23
  • 2022-12-23
相关资源
相似解决方案