1

我正在做一个java应用程序。

到目前为止,这是我的文件:

人机界面。

有一个 setName(String aName) 方法

PersonImpl

人员界面的实现。

PersonFactory 接口

有一个 createPerson()

PersonFactoryImpl

PersonFactory 接口的实现。

问题是我愿意添加一个 getAll() 方法,它返回一个人的集合,但我不知道把它放在哪里。

我正在考虑将其作为静态方法添加到 PersonImpl 或 PersonFactoryImpl,但我不确定。

哪个是最好的方法?

谢谢阅读!

4

3 回答 3

3

合乎逻辑的方法是将其作为静态方法添加到PersonFactory. 那是生成您的Person对象的类,如果它保留对所有生成的对象的引用,它应该能够回答您的getAll()API。

显然,每个对象都知道其他相似对象是不合理的Person,因此这种方法不属于那里。

编辑:鉴于它们驻留在数据库中,明智的做法是将PersonFactory(创建Person对象的作业)与PersonRepository实际访问数据库(或您拥有的任何持久性)并返回Person对象的对象分离。

同一个类既负责创建对象又负责从数据库中获取对象,这对我来说似乎很尴尬。话虽如此,如果您的应用程序需要这种紧耦合,它可能是可以接受的。

于 2009-06-19T18:43:57.740 回答
3

如果提供了 PersonFactory 的另一个实现,是否也需要提供 #getAll?如果是这样,它属于接口......然后它不能是Java中的静态方法。

鉴于此,它是您的 PersonFactory 的一个功能,还是您的存储机制也应该有一个抽象?如果是这样,其实现接受 PersonFactory 并为 getAll 类型功能提供自然归宿的 PersonRepository 接口似乎更合适。如果不是,那么作为具体 PersonFactory 的成员可能就足够了......

于 2009-06-19T18:48:52.363 回答
0

工厂负责管理 Persons 的实例,所以这是放置它的正确位置。此外,它应该是非静态createPerson()的。

于 2009-06-19T19:33:55.883 回答