22、Flyweight 享元模式
享元模式 Flyweight
享元设计模式主要目的是减少创建对象的数量,以减少内存占用和性能提升,这种类型的设计模式属于结构性模式,它提供减少对象数量从而改善应用所需的对象结构方式。
享元模式尝试重用现有的同类对象,如果未能找到匹配的对象,则创建新对象。
意图: 运用共享技术有效地支持大量细粒度的对象
主要解决: 对有大量对象时,有可能造成内存溢出,我们把其中共同的部门抽取出来,如果有相同的业务请求,直接返回在内存中已有的对象,避免重写创建
何时使用:
1. 系统中有大量对象
2.这些对象消耗大量内存
3. 这些对象的状态大部分可以外部化
4.这些对象可以按照内存状态分为很多组
如何解决: 用唯一识别码判别,如果在内存中有,则返回这个唯一识别码所标识的对象
关键代码: 用 HashMap 存储这些对象
优点:大大减少对象的创建,降低系统的内存,提高效率
缺点: 提高系统的复杂度,需要分离出外部状态与内部状态,而且外部状态具有固有化的性值,不随着内部状态的变化而变化,否则会造成系统的混乱。
参考:https://www.runoob.com/design-pattern/flyweight-pattern.html