我正在做一个java应用程序。
到目前为止,这是我的文件:
有一个setName(String aName)方法
人员界面的实施。
有一个createPerson()
PersonFactory接口的实现。
问题是我愿意添加一个返回人员集合的方法getAll(),我不知道在哪里放置它。
我在考虑将它作为静态方法添加到PersonImpl或PersonFactoryImpl,但我不确定。
哪种方式最好?
感谢阅读!
答案 0 :(得分:3)
逻辑方法是将其作为静态方法添加到PersonFactory
。这是生成Person
个对象的类,如果它保留对所有生成对象的引用,它应该能够回答您的getAll()
API。
显然,每个Person
对象都知道其他类似对象是不合理的,因此这种方法不属于那里。
编辑:鉴于它们驻留在数据库上,将PersonFactory
(哪个作业是创建Person
个对象)从一个去耦合可能是明智之举PersonRepository
实际访问数据库(或任何持久性)并返回Person
个对象。
对我来说,同一个类负责创建对象以及从数据库中获取对象,这似乎很尴尬。话虽如此,如果您的应用需要这种紧耦合,那么它可能是可以接受的。
答案 1 :(得分:3)
如果提供了另一个PersonFactory实现,是否还需要提供#getAll?如果是这样,它属于接口...然后它不能是Java中的静态方法。
鉴于此,它是您的PersonFactory的功能还是应该为您的存储机制提供抽象?如果是这样,PersonRepository接口的实现接受PersonFactory,并为getAll类型功能提供一个自然的主页似乎更合适。如果没有,那么作为具体PersonFactory的成员就足够了......
答案 2 :(得分:0)
工厂负责管理人员的实例,因此这是放置它的正确位置。此外,它应该是非静态的,就像createPerson()
一样。