1. 什么是享元模式
享元模式(Flyweight Pattern)主要用于减少创建对象的数量,以减少内存占用和提高性能。这种类型的设计模式属于结构型模式,它提供了减少对象数量从而改善应用所需的对象结构的方式。
享元模式尝试重用现有的同类对象,如果未找到匹配的对象,则创建新对象。
运用共享技术有效地支持大量细粒度的对象。
2. 应用实例
Java中的String,如果有则返回,如果没有则创建一个字符串保存在字符串缓存池里面。
Java 基本数据类型的包装类型的大部分都用到了缓存机制(享元模式)来提升性能。Byte,Short,Integer,Long 这 4 种包装类默认创建了数值 [-128,127] 的相应类型的缓存数据,Character 创建了数值在 [0,127] 范围的缓存数据。
我们以Integer中的valueOf()方法为例,观其源码:
测试:
public class Main {
public static void main(String[] args) {
Integer a = 100;//自动装箱调用valueOf()方法
Integer b = 100;
Integer c = 200;
Integer d = 200;
System.out.println("a == b:" + (a == b));
System.out.println("c == d:" + (c == d));
}
}
结果: