1. 问题场景
    大量相似对象导致性能下降;
    对象的大多数状态都可以变为外部状态

  2. 解决思路
    将对象间值相同的属性(内部状态)提取出来作为共享对象创建并复用之,其他属性(外部状态)在运行时动态添加到共享对象,从而减少对象数量,以时间换空间。
    简单来说: 把10个人穿10条裤子换成1个人换10次裤子,减少了人的数量,增加了换裤子的时间。
    优化:
    (1) 一开始可能不需要共享对象——解决:用对象工厂。需要时才从工厂创建;
    (2)外部状态很多时,与共享对象的联系杂乱——解决:创建外部状态管理器,统一存储和添加外部状态。
    简单来说,用外部管理器来存储和动态给共享模特设置裤子/帽子、鞋子等外部状态。
    js设计模式-享元模式(8)

  3. 具体实现

  4. 优缺点
    优点:用相对较少的共享对象取代大量对象
    缺点:对象数量少的情况,可能会增大系统的开销,实现的复杂度较大

相关文章:

  • 2021-09-16
  • 2021-12-12
猜你喜欢
  • 2022-12-23
  • 2021-12-15
  • 2021-06-17
  • 2021-04-04
  • 2021-10-21
相关资源
相似解决方案