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

Java:何时在类中声明对象为引用变量(示例解析)

Java对象交互的两种实现:实例持有 vs 方法传参

1. 何时应将对象声明为类的实例引用变量,而非仅作为方法参数?

判断核心看类的职责、对象关联关系以及使用频率,常见适用场景:

  • 类的核心逻辑持续依赖该对象:比如OrderService需要一直持有OrderDao完成订单增删改查,这类核心依赖无需每次调用方法都传入,作为实例变量更贴合职责单一原则。
  • 需要维护与该对象的长期状态绑定:比如UserWallet必须绑定特定User,钱包余额、交易记录都归属该用户,强关联关系下把User作为实例变量能清晰体现归属逻辑。
  • 多个方法频繁复用同一对象:若类中多个方法都需要用到同一个对象,每次传参会导致代码冗余,作为实例变量可避免重复传参,提升代码简洁度。
  • 对象是类的配置/固定依赖:比如数据库连接池、第三方服务客户端,这类对象初始化成本高,且类的所有方法都依赖它,作为实例变量注入后复用更高效。

2. 原TimeMachine设计是否合理,是否应改为NewTimeMachine?

这完全取决于TimeMachine的业务语义,不能只看运行结果:

  • 如果业务上TimeMachine是专属某个人的设备(比如某角色的私人时光机,仅该人可操作),原设计就很合理——从创建时绑定特定Person,清晰体现“专属”的关联关系,避免每次调用travelInTime重复传同一个对象。
  • 如果业务上TimeMachine是公共设备(比如时光机体验馆的机器,符合条件的Person都能使用),那NewTimeMachine的实现更合适,它支持不同Person随时使用,无需绑定固定用户。

简言之:运行结果一致只是表象,设计是否合理要对齐业务场景中对象的职责与关联关系。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.19 11:27:40