定义
运用共享技术减少对象数量
适用场景
- 池技术
- 系统有大量相同对象
应用案例
- JDK中的String,常量池中存在时直接返回,没有则创建放入池中
- 数据库连接池
代码
public interface Boll {
void logColor();
}
public class ColorBoll implements Boll {
private static final Map<String,Boll> STRING_BOLL_MAP = new HashMap<>();
private String color;
public ColorBoll(String color) {
this.color = color;
}
@Override
public void logColor() {
System.out.println(this.color);
}
public static Boll getBoll(String color){
Boll boll = STRING_BOLL_MAP.get(color);
if (boll == null){
boll = new ColorBoll(color);
STRING_BOLL_MAP.put(color,boll);
System.out.println("创建了boll : "+color);
}
return boll;
}
}
public class Test {
public static void main(String[] args) {
Boll boll = ColorBoll.getBoll("red");
boll.logColor();
boll = ColorBoll.getBoll("blue");
boll.logColor();
boll = ColorBoll.getBoll("blue");
boll.logColor();
boll = ColorBoll.getBoll("blue");
boll.logColor();
boll = ColorBoll.getBoll("red");
boll.logColor();
boll = ColorBoll.getBoll("yellow");
boll.logColor();
}
}
创建了boll : red
red
创建了boll : blue
blue
blue
blue
red
创建了boll : yellow
yellow