【发布时间】:2021-02-09 08:21:47
【问题描述】:
我有一个需要构建的类,它从文件中获取信息并对其执行某些计算。它将被传递一个 File 对象,并且需要填写几个实例变量(例如,哈希)。怎样才能不把所有工作都放在构造函数中呢?
我的一个想法是简单地将单个实例变量传递给构造函数,一个 File 对象,然后在必要时计算所需的值。但问题是我需要一个容器来存放这些值,稍后我将把它传递给一个单独的类。如果我实现了这个策略,我需要一个只包含实例变量的单独类。
【问题讨论】:
-
不是一个真正的“问题”——我说继续做吧。
-
如果这个逻辑真的是构建对象所涉及的,那就去做吧。我想说的一个例外是不要传递
File,而是传递InputStream或Reader。 -
为什么你不想在构造函数中做这个工作?构造函数的工作是构造对象,所以只要对象是安全构造的,就可以为所欲为。
-
@PrashantPandey 我总是被教导构造函数应该只分配变量,而不是计算它们,或者做一般的逻辑。
-
@Astrum 不是真的。如果实例创建依赖于构造函数,那么在构造函数内部进行是有意义的,只要我们确保逻辑不会导致异常并且正在构造的对象的实例在构造函数之前不会逃脱构造函数构造得当。它还取决于您的应用程序的性质。对于响应速度快的应用程序,将长时间运行的操作放在构造函数中可能是个坏主意。对于后台作业,没那么多。
标签: java oop constructor software-design