Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/358.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/design-patterns/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 检索嵌套对象列表的方法属于哪个服务类?_Java_Design Patterns_Language Agnostic - Fatal编程技术网

Java 检索嵌套对象列表的方法属于哪个服务类?

Java 检索嵌套对象列表的方法属于哪个服务类?,java,design-patterns,language-agnostic,Java,Design Patterns,Language Agnostic,这适用于任何语言,但我使用Java来实现这一点,所以 public class Egg { ... } public class BirdNest { private List<Egg> eggs; ... } 公共类鸡蛋{ ... } 公共类鸟类{ 私人名单鸡蛋; ... } 我还有与这些类匹配的数据库实体。基本上,BirdNest与Egg有1:M的关系 要在这些类上执行持久性/检索操作,我还有一个BirdNestService和一个EggServ

这适用于任何语言,但我使用Java来实现这一点,所以

public class Egg {
    ...
}

public class BirdNest {

    private List<Egg> eggs;

    ...
}
公共类鸡蛋{
...
}
公共类鸟类{
私人名单鸡蛋;
...
}
我还有与这些类匹配的数据库实体。基本上,
BirdNest
Egg
有1:M的关系

要在这些类上执行持久性/检索操作,我还有一个
BirdNestService
和一个
EggService

假设我想从给定的鸟巢中检索鸡蛋列表

我可以有一个方法,比如
List-getegs(int-birdNestId)

我的问题是,像这样的方法应该属于哪个服务

它基于特定的鸟巢执行操作,因此您可以认为它应该是
BirdNestService
的一部分


然后,您可以再次争辩它正在检索的项目是
Egg
,因此它应该属于
EggService
我认为它是
BirdNestService
的一部分,因为Egg只是一个实体,它不依赖于Nest。但巢里有蛋,否则巢里没有蛋就没用了。巢靠蛋,蛋不靠巢。在我看来,Nest必须有他拥有的蛋的信息,并且它已经包含了你在类中描述的蛋列表,蛋不需要记住它们的巢Id,除非你有一个非常复杂的场景,你想通过它们的蛋或某些特定的要求来找到巢Id

我认为它是
BirdNestService
的一部分,因为Egg只是一个实体,它不依赖于Nest。但巢里有蛋,否则巢里没有蛋就没用了。巢靠蛋,蛋不靠巢。在我看来,Nest必须有他拥有的蛋的信息,并且它已经包含了你在类中描述的蛋列表,蛋不需要记住它们的巢Id,除非你有一个非常复杂的场景,你想通过它们的蛋或某些特定的要求来找到巢Id

如果您将其放入
EggService
中,则此服务知道
BirdNest
概念(
birdNestId
),而这不是您想要的


因此答案是
BirdNestService

如果你把它放在
EggService
中,那么这个服务知道一个
BirdNest
概念(
birdnestd
),这不是你想要的


因此答案是
BirdNestService

BirdNestService
不应该需要像
List-getegs(int-birdnesid)这样的方法
如果您想从给定的birdnest中检索鸡蛋,那么应该很简单:
列出myEggs=myBirdNest.getegs()


BirdNestService
应该有您想在BirdNest上使用的操作(方法),例如
BirdNest buildBirdNest(int-amountStems,Bird-byBird)
BirdNestService
不应该需要像
List-getegs(int-birdnestd)这样的方法
如果您想从给定的birdnest中检索鸡蛋,那么应该很简单:
列出myEggs=myBirdNest.getegs()


BirdNestService
应该有您想要在BirdNest上使用的操作(方法),例如
BirdNest buildBirdNest(intamountstems,Bird byBird)

我认为应该是EggService

原因是目前您的查询只需要鸟巢的鸡蛋,但情况可能并非总是如此。明天你可能需要根据某些特征来寻找鸡蛋,例如大小、颜色等


因此,我会选择EggService,因为毕竟你是在试图识别具有某种特征的蛋——在这种情况下,蛋属于某种鸟类。我认为应该是EggService

原因是目前您的查询只需要鸟巢的鸡蛋,但情况可能并非总是如此。明天你可能需要根据某些特征来寻找鸡蛋,例如大小、颜色等

因此,我会选择EggService,因为毕竟您正在尝试识别具有特定特征的蛋——在本例中,它属于特定的鸟巢。

List getegs(int birdnesid)方法要求在特定鸟巢中包含蛋。我的想法是:

  • 从概念上讲,鸟巢存储蛋的句柄(ID)。从数据库的角度来看,egg表中包含外键。实际的鸡蛋存储在蛋表中
  • 因此,向BirdNestService请求鸟巢的蛋更有意义,鸟巢可以进行一些验证,比如它是否是有效的鸟巢id,然后检索蛋的句柄
  • 然后,它可以咨询EggService,以提供与id列表匹配的鸡蛋列表
因此,我更愿意在BirdNestService中使用List GetOggs(int birdNestId)方法,并在EggService中添加如下方法: 列出getEggs(列出eggIds)

但同样,没有正确或错误的答案。这将取决于是什么使您的设计干净、连贯和可维护。

List-getegs(int-birdnesid)方法要求特定巢中包含蛋。我的想法是:

  • 从概念上讲,鸟巢存储蛋的句柄(ID)。从数据库的角度来看,egg表中包含外键。实际的鸡蛋存储在蛋表中
  • 因此,向BirdNestService请求鸟巢的蛋更有意义,鸟巢可以进行一些验证,比如它是否是有效的鸟巢id,然后检索蛋的句柄
  • 然后,它可以咨询EggService,以提供与id列表匹配的鸡蛋列表
因此,我更愿意在BirdNestService中使用List GetOggs(int birdNestId)方法,并在EggService中添加如下方法: 列出getEggs(列出eggIds)

但同样,没有正确或错误的答案。这将取决于