享元模式 Flyweight

发布时间 2023-12-21 08:54:44作者: 梅丹隆

一、定义

  • 提供了减少对象数量从而改善应用所需对象创建的方式
  • 运用共享技术有效地支持大量细粒度的对象

二、使用场景

  • 常用于系统底层的开发,以便继绝系统的性能问题
  • 系统有大量相似的对象、需要缓冲池的场景

三、优缺点

1、优点

  • 减少对象的创建,从而降低内存中对象的数量,降低系统的内存,提高效率
  • 减少内存之外的其他资源占用

2、缺点

  • 需要关注内/外部状态,需要关注线程安全问题
    • 内部状态:对象本身
    • 外部状态:不同对象的不同属性
  • 使系统、程序的逻辑复杂化

四、代码实现

https://github.com/Meidanlong/all-in-one/tree/master/design/src/main/java/com/mdl/design/pattern/structural/flyweight

image.png