亦称: 缓存、Cache、Flyweight
享元模式是一种结构型设计模式, 它摒弃了在每个对象中保存所有数据的方式, 通过共享多个对象所共有的相同状态, 让你能在有限的内存容量中载入更多对象。
享元模式结构
实现
- 情景对象:Tree 外在状态:经常改变的
- 享元对象:TreeType 内在状态:不变的,可重复使用
- 享元工厂:TreeFactory 管理享元对象
- 客户端:Forest
适用场景
- 需要生成大量相似对象,并且对象包含可共享的重复状态
- 比如Android的Handler,复用Message
优缺点
<aside>
✅ 节省内存
</aside>
<aside>
❌ 牺牲一些执行速度
</aside>
<aside>
❌ 代码变得更复杂
</aside>
关系
- 可以使用享元模式实现组合模式树的共享叶节点以节省内存。
- 享元对象不可变,单例对象可变
- 享元对象可以有多个,单例对象只有一个