享元模式

享元模式是什么?

享元模式 —— Flyweight Pattern,主要用于减少创建对象的数量,以减少内存占用和提高性能。
它提供了减少对象数量从而改善应用所需的对象结构的方式。
享元模式尝试重用现有的同类对象,如果未找到匹配的对象,则创建新对象。

  • 解决问题: 在有大量对象时,有可能会造成内存溢出,我们把其中共同的部分抽象出来,如果有相同的业务请求,直接返回在内存中已有的对象,避免重新创建。
  • 如何重用对象: 为对象提供唯一标识码,该标识码作为Hash查找的key。
  • 需要注意问题: 线程 和 资源抢夺的问题,必要时上锁。

结构:

image.png

代码实现

  • 抽象类
    image.png
  • 实现类

    image.png

    image.png

  • 访问工具类

    image.png

    image.png

  • 调用结果
    image.png

总结

享元模式在关键点在 “重用” 怎么设计好重用机制是十分重要的,并且应该设置HashMap的存储上限,避免在某些特殊的情况下创建新对象存放进去,造成内存损坏。
而在应用上来说,大多数的语言都能应用上享元模式,而应用的重点是:如何确定重用范围,和在确保现有架构下引入重用机制是否会引起什么问题?
这是一个十分开阔的设计模型。

你可能感兴趣的:(享元模式)