享元模式是什么?
享元模式 —— Flyweight Pattern,主要用于减少创建对象的数量,以减少内存占用和提高性能。
它提供了减少对象数量从而改善应用所需的对象结构的方式。
享元模式尝试重用现有的同类对象,如果未找到匹配的对象,则创建新对象。
- 解决问题: 在有大量对象时,有可能会造成内存溢出,我们把其中共同的部分抽象出来,如果有相同的业务请求,直接返回在内存中已有的对象,避免重新创建。
- 如何重用对象: 为对象提供唯一标识码,该标识码作为Hash查找的key。
- 需要注意问题: 线程 和 资源抢夺的问题,必要时上锁。
结构:
image.png代码实现
-
抽象类
image.png
-
实现类
image.png
image.png -
访问工具类
image.png
image.png
-
调用结果
image.png
总结
享元模式在关键点在 “重用” 怎么设计好重用机制是十分重要的,并且应该设置HashMap的存储上限,避免在某些特殊的情况下创建新对象存放进去,造成内存损坏。
而在应用上来说,大多数的语言都能应用上享元模式,而应用的重点是:如何确定重用范围,和在确保现有架构下引入重用机制是否会引起什么问题?
这是一个十分开阔的设计模型。
网友评论