Java:使用一个类生成另一个类的对象

Nic*_*ner 2 java oop constructor factory software-design

我有两节课.SpeciesReader获取文件并解析它们.Species存储有关物种的某些数据,这些数据已从文件中解析.

目前,我有一个方法:SpeciesReader.generateSpecies(),它使用实例化它的文件来创建一个Species对象.这是不好的做法/设计吗?我应该以某种方式找到一种方法将其移动到构造函数中Species,将文件名作为参数?

cle*_*tus 8

一点也不.这是一种称为工厂的常见模式.

话虽这么说,工厂通常是在类本身(在这种情况下是物种)上实现的,而不是单独的类,但我认为将它分开是没有问题的.

至于这个责任是否应该改为物种,这取决于文件的性质.如果一个文件只包含一个Species并且加载该文件没有大的开销,那么将它作为Species的一部分可能是有意义的.

但是如果文件包含大量物种或者初始化成本很高,那么将该责任转移到另一个类并让它负责创建Species对象是完全合理的.