22、Flyweight 享元模式

享元模式 Flyweight

享元设计模式主要目的是减少创建对象的数量,以减少内存占用和性能提升,这种类型的设计模式属于结构性模式,它提供减少对象数量从而改善应用所需的对象结构方式。

享元模式尝试重用现有的同类对象,如果未能找到匹配的对象,则创建新对象。

意图: 运用共享技术有效地支持大量细粒度的对象

主要解决: 对有大量对象时,有可能造成内存溢出,我们把其中共同的部门抽取出来,如果有相同的业务请求,直接返回在内存中已有的对象,避免重写创建

何时使用:

1. 系统中有大量对象

2.这些对象消耗大量内存

3. 这些对象的状态大部分可以外部化

4.这些对象可以按照内存状态分为很多组

如何解决: 用唯一识别码判别,如果在内存中有,则返回这个唯一识别码所标识的对象

关键代码: 用 HashMap 存储这些对象

优点:大大减少对象的创建,降低系统的内存,提高效率

缺点: 提高系统的复杂度,需要分离出外部状态与内部状态,而且外部状态具有固有化的性值,不随着内部状态的变化而变化,否则会造成系统的混乱。

参考:https://www.runoob.com/design-pattern/flyweight-pattern.html

 

posted @ 2019-03-15 15:23  byebai95  阅读(134)  评论(0编辑  收藏  举报