You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Java包装类如何实现工厂模式?以Integer的valueOf方法为例

包装类的valueOf方法如何实现工厂模式?

首先得明确,工厂模式的核心就是封装对象的创建逻辑,让调用者不用关心对象是怎么来的,只需要拿到符合需求的对象。Integer的valueOf就是这种模式的典型实现——静态工厂方法。

先看你贴的代码:

public static Integer valueOf(int i) {
    if (i >= IntegerCache.low && i <= IntegerCache.high)
         return IntegerCache.cache[i + (-IntegerCache.low)];
    return new Integer(i);
}

这个方法的作用就是根据传入的int值,返回对应的Integer对象,但它把创建逻辑完全封装起来了:

  • 当int值在IntegerCache.low(默认-128)到IntegerCache.high(默认127)这个区间时,直接返回缓存里已经创建好的Integer对象,避免重复创建相同值的对象
  • 如果超出这个区间,才会新建一个Integer对象返回

你可能疑惑它没有传统工厂模式里的“工厂类”,但静态工厂方法本身就是工厂模式的一种简化形式——它不需要额外的工厂类,直接用静态方法承担了工厂的职责:负责创建、复用对象,给调用者提供统一的获取对象的入口。

再看Boolean的valueOf会更直观:

public static Boolean valueOf(boolean b) {
    return (b ? TRUE : FALSE);
}

它直接复用TRUE和FALSE两个静态实例,完全不创建新对象,把对象的创建和复用逻辑彻底封装,调用者只需要传一个boolean值就能拿到对应的Boolean对象,这就是工厂模式的核心价值——屏蔽创建细节,统一对象获取方式。

内容的提问来源于stack exchange,提问作者coder25

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.30 01:57:12