概念
一个类的实例有多种 “虚拟实例”。 虚拟实例通过共享数据的方式存在。
实现
- 类图:
Tree:
1 | package com.littlehui.design.flyweight; |
1 | package com.littlehui.design.flyweight; |
1 | package com.littlehui.design.flyweight; |
场景
在java应用中,会出现许多String a=”123”,String b=”123”之类的String类型的变量,如果只是小应用,到还好,假设是一个庞大的系统,有好多处都需要用定义String a=”223”,那开销可想而知,而JDK的开发者自然想到了这点,采用了享元模式解决创建大量相同String变量带来的开销问题
总结
享元模式,其功能是在运行时减少实例的个数,节省内存。当一个类有许多的实例,而这些实例能被统一个方法控制到时候,可以用享元模式。