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

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

人员界面。

有一个setName(String aName)方法

PersonImpl的

人员界面的实施。

PersonFactory接口

有一个createPerson()

PersonFactoryImpl

PersonFactory接口的实现。

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

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

哪种方式最好?

感谢阅读!

有帮助吗?

解决方案

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

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

其他提示

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

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

编辑:鉴于它们驻留在数据库中,将 PersonFactory 分离出来可能是明智的(哪个作业是创建 Person 对象),来自 PersonRepository ,它将实际访问数据库(或任何持久性)并返回 Person 对象。

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

工厂负责管理人员的实例,因此这是放置它的正确位置。此外,它应该是非静态的,就像 createPerson()一样。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top