-
问题场景
大量相似对象导致性能下降;
对象的大多数状态都可以变为外部状态 -
解决思路
将对象间值相同的属性(内部状态)提取出来作为共享对象创建并复用之,其他属性(外部状态)在运行时动态添加到共享对象,从而减少对象数量,以时间换空间。
简单来说: 把10个人穿10条裤子换成1个人换10次裤子,减少了人的数量,增加了换裤子的时间。
优化:
(1) 一开始可能不需要共享对象——解决:用对象工厂。需要时才从工厂创建;
(2)外部状态很多时,与共享对象的联系杂乱——解决:创建外部状态管理器,统一存储和添加外部状态。
简单来说,用外部管理器来存储和动态给共享模特设置裤子/帽子、鞋子等外部状态。
-
具体实现
-
优缺点
优点:用相对较少的共享对象取代大量对象
缺点:对象数量少的情况,可能会增大系统的开销,实现的复杂度较大
js设计模式-享元模式(8)
最新推荐文章于 2023-04-27 22:05:47 发布