代码之家  ›  专栏  ›  技术社区  ›  noobcoder

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

  •  1
  • noobcoder  · 技术社区  · 6 年前

    public class Egg {
        ...
    }
    
    public class BirdNest {
    
        private List<Egg> eggs;
    
        ...
    }
    

    BirdNest 有1:M的关系 Egg .

    为了对这些类执行持久性/检索操作,我还有一个 BirdNestService EggService .

    我可以有这样的方法 List<Egg> getEggs (int birdNestId);

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

    它基于一个特定的鸟巢执行操作,所以你可以说它应该是 鸟巢服务

    所以它应该属于 .

    6 回复  |  直到 6 年前
        1
  •  9
  •   Nghia Bui    6 年前

    如果你把它放进 EggService BirdNest 概念( birdNestId

    所以答案是 BirdNestService .

        2
  •  0
  •   Khalid Shah    6 年前

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

        3
  •  0
  •   ndueck    6 年前

    BirdNestService 不需要像这样的方法 List<Egg> getEggs (int birdNestId); .
    鉴于 birdnest,那么应该很简单: List<Egg> myEggs = myBirdNest.getEggs()
    BirdNest buildBirdNest(int amountStems, Bird byBird) .

        4
  •  0
  •   Sid Malani    6 年前

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

    因此,我会选择蛋服务,因为毕竟你是在尝试识别具有某种特征的蛋——在这个例子中,是属于某种鸟类的蛋。

        5
  •  0
  •   K. M. Fazle Azim Babu    6 年前

    List-getEggs(int-birdNestId)方法请求特定巢中包含的蛋。我的想法是:

    • 从概念上讲,鸟巢储存蛋的把手(id)。从数据库的角度来看,外键指向egg表。实际的鸡蛋存放在蛋桌上。
    • 因此,向BirdNestService请求鸟巢的蛋更有意义,鸟巢可以进行一些验证,比如它是否是有效的巢id,然后检索蛋的句柄。
    • 然后它可以咨询EggService,给出一个与id列表匹配的鸡蛋列表。

    因此,我更希望在BirdNestService中有List getEggs(int birdNestId)method方法,并在EggService中添加如下方法:

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

        6
  •  0
  •   Andrii Plotnikov    6 年前

    检索实体的属性,因此它是嵌套的一部分。不用动脑筋。

    现在,如果您有birdnestid属性,并根据该属性过滤egg数据库,那么它将是egg实体的一部分,因此您将把它放入egg服务中。

    这样,您就可以在两个不同的服务中同时使用这两种方法。

    你应该用哪一种?根据经验,使用自上而下的方法:当你需要孩子时,总是去找父母