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

其中哪一个是存储库模式?

  •  3
  • Sunny  · 技术社区  · 15 年前

    我的域实体像树一样排列:


    -孩子1
    ——孩子1.1
    ——孩子1.2
    -儿童2
    --儿童2.1
    ——孩子2.2

    最后,我们对如何围绕这些域对象设计存储库提出了两个(相当强烈的)意见:

    意见1:
    我需要2个由rootfacade/rootmanager类管理的存储库child1repository&child2repository来调用存储库上的适当方法。2个子存储库只处理DAL操作,而rootfacade是BLL。rootfacade向应用程序公开DTO,而在内部,所有3个存储库都使用域对象

    意见2:
    我需要一个库rootrepository来处理所有的事情(bll+dal)。存储库在内部处理域对象时公开DTO

    我想对这2点有一些看法,这实际上是实现存储库的方法。

    谢谢你的帮助

    2 回复  |  直到 15 年前
        1
  •  3
  •   John Feminella    15 年前

    课程不应该承担比他们需要承担的更多的责任,这听起来绝对像是 RootRepository 走错路了吗?它吸收了太多的复杂性,并对太多的实体负责。在您提供的两个选项中,第一个是更好的选择:拥有更多的存储库,它们各自负责各自领域的一角。

    但是,我不清楚你为什么 RootManager 完全。我宁愿要一系列 DomainObjectRepositories 它们各自在内部管理自己的业务逻辑,只公开相关的公共操作,然后将实际的数据库操作推迟到数据访问对象。 DomainObjectDao .拥有一个无所不知的所有业务逻辑类是一种可怕的代码味道,在这个特殊的情况下,有点企业过度杀伤力。

        2
  •  0
  •   Burt    15 年前

    我们使用选项1,它非常适合我们。假设child 1是一个用户存储库,child 2是一个角色存储库,其外观是安全外观。用户存储库将返回一个用户域对象,该对象是聚合根,用户对象包含角色。我们将只对getAllRoles使用角色存储库。

    我们的域对象有一个getdto方法,它返回DTO以通过外观进行传输。

    我希望这有帮助。

    推荐文章