zoukankan      html  css  js  c++  java
  • Repository总结

    Repository有两种实现思想
    1.自由式。领域层(DomainModel和DomainService)需要什么样的数据,都问Repository拿,Repository根据领域层的需要,增加许多方法。
    2.固定式。Repository只提供有限的几个接口,其中查询数据只提供FindById、GetAll几种方法。

    注意,固定式、特别是泛型的固定式(泛型的Repository)容易流于DA模式。
    DA模式与Repository模式有显著差别,要注意区分。

    我越来越倾向于用固定式。
    但固定式有个前提:DomainModel必须设计为聚合模型,访问任何数据,都必须从聚合根入手,不能跳过聚合根。
    例如我们要获得某张销售订单的所有货品,那么不能直接从销售明细中查找,而必须从销售订单(聚合根)得到销售明细,然后再从销售明细获得货品。

    为什么要这么做?
    1.能够轻易地区分每个Repository的职责。当Repository是自由定制接口时,有许多查询方法不知道该写在哪个Repository中;
    2.防止Repository接口的重复和膨胀。当多人编写Repository时,容易有重复的接口(写在不同的Repository中),而且随着领域模型的增大,Repository接口会成倍增长,但除了少量的接口,大部分接口都是专用的(只有一个调用者,且只在一个地方调用)。
    3.重要的原因是为了强调聚合根。当Repository固定时,任何数据的访问必须从聚合根入手。这就保证了我们在设计系统时,必须以OO的思想来设计领域模型,而不是以ER模型的思想来设计领域模型。

  • 相关阅读:
    BiliBili, ACFun… And More!【递归算法】
    【VS2015】关于VS2015如何运行的问题
    【打死树莓派】-树莓派3代jessie+Opencv-解决安装不了libgtk2.0-dev包问题
    插入排序2.0
    【C++小白成长撸】--(续)单偶数N阶魔方矩阵
    【C++小白成长撸】--(续)双偶数N阶魔阵
    安装 python-opencv
    二叉树打印
    Kotlin接口
    Kotlin 继承
  • 原文地址:https://www.cnblogs.com/ego/p/2650693.html
Copyright © 2011-2022 走看看