享元模式

摒弃了在每个对象中保存所有数据的方式,通过共享多个对象所共有的相同状态,让你能在有限的内存容量中载入更多对象

适用场景

  • 仅在程序必须支持大量对象且没有足够的内存容量时使用享元模式

优/缺点

优点:

  • 如果程序中有很多相似对象,那么你将可以节省大量内存

缺点:

  • 可能需要牺牲执行速度来换取内存,因为他人每次调用享元方法时都需要重新计算部分情景数据

  • 代码会变得更加复杂

对比其他模式

  • 可以使用享元模式实现组合模式树的共享叶节点以节省内存

  • 享元展示了如何生成大量的小型对象,外观模式则展示了如何用一个对象来代表整个子系统

  • 如果你能将对象的所有共享状态简化为一个享元对象,那么享元就和单例模式类似了。但这两个模式有两个根本性的不同

实现示例

最后更新于