Java 具有工厂时,在何处放置getAll()方法

Java 具有工厂时,在何处放置getAll()方法,java,factory,Java,Factory,我正在做一个java应用程序 这是我目前的文件: 人机界面。 具有setNameString aName方法 人格 人机界面的实现 PersonFactory接口 有一个人 个人工厂 PersonFactory接口的实现 问题是我愿意添加一个getAll方法,它返回一个person集合,但我不确定将它放在哪里 我曾考虑将其作为静态方法添加到PersonImpl或PersonFactoryImpl,但我不确定 哪种方式最好 谢谢你的阅读 合乎逻辑的方法是将其作为静态方法添加到PersonFacto

我正在做一个java应用程序

这是我目前的文件:

人机界面。 具有setNameString aName方法

人格 人机界面的实现

PersonFactory接口 有一个人

个人工厂 PersonFactory接口的实现

问题是我愿意添加一个getAll方法,它返回一个person集合,但我不确定将它放在哪里

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

哪种方式最好


谢谢你的阅读

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

显然,每个Person对象意识到其他类似对象是不合理的,因此这种方法不属于那里

编辑:考虑到它们驻留在数据库中的事实,最好将创建Person对象的PersonFactory与实际访问数据库或任何持久性并返回Person对象的PersonRepository分离


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

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

显然,每个Person对象意识到其他类似对象是不合理的,因此这种方法不属于那里

编辑:考虑到它们驻留在数据库中的事实,最好将创建Person对象的PersonFactory与实际访问数据库或任何持久性并返回Person对象的PersonRepository分离


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

如果提供了PersonFactory的另一个实现,那么它是否也需要提供getAll?如果是,则它属于接口。。。在Java中,它不能是静态方法


考虑到这一点,它是PersonFactory的一个功能,还是应该对存储机制进行抽象?如果是这样的话,PersonRepository接口的实现接受PersonFactory,并为getAll类型功能提供一个自然的家似乎更合适。如果不是,那么作为混凝土人工厂的一员就足够合适了

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


考虑到这一点,它是PersonFactory的一个功能,还是应该对存储机制进行抽象?如果是这样的话,PersonRepository接口的实现接受PersonFactory,并为getAll类型功能提供一个自然的家似乎更合适。如果不是,那么作为混凝土人工厂的一员就足够合适了

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

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

实际上它们保存在数据库中。getAll将从那里获得它们。不知道这是否会改变你的答案。实际上它们保存在数据库中。getAll将从那里获得它们。不知道这是否会改变你的答案。是的,如果有另一个PersonFactory的impl,它应该提供getAll。要将它添加到界面中,我可以使它不是静态的,但看起来不太好。请,您能更好地解释一下PersonRepository是什么意思吗?静态可变状态是邪恶的-它没有意义,而且对于额外的分数来说,它很难测试,不明显是多线程的,而且不安全。对于repository-谷歌的模式,或者Martin Fowler的企业应用程序架构模式,IIRC.BTW:+1表示repository。但可能不需要是接口。为了更好地进行单元测试,而不是数据库耦合,我的实现模式是存储库必须是接口。YMMV.是的,如果有另一个PersonFactory impl,它应该提供getAll。要将它添加到界面中,我可以使它不是静态的,但看起来不太好。拜托,你能更好地解释一下你对PersonRep的意思吗
ository?静态可变状态是邪恶的-它没有意义,而且对于额外的分数来说,它很难测试,不是明显的多线程并且不安全。对于repository-谷歌的模式,或者Martin Fowler的企业应用程序架构模式,IIRC.BTW:+1表示repository。但可能不需要是接口。为了更好地进行单元测试,而不是数据库耦合,我的实现模式是存储库必须是接口。YMMV。