代码之家  ›  专栏  ›  技术社区  ›  Zachary Scott

DDD:尝试使用C对与POCO、知识库、DTO和DAO相关的代码进行排序和筛选。

  •  3
  • Zachary Scott  · 技术社区  · 15 年前

    我从我的存储库中得到一个项目列表。现在我需要对它们进行分类和过滤,我相信这将在存储库中实现,以提高效率。我认为有两种方法可以通过DDD来实现这一点:

    1. 将一个满是条件的筛选器和排序对象发送到存储库(这叫什么)?
    2. 存储库结果将生成一个具有.filter和.sort方法的对象?(这不是POJO/POCO,因为它包含多个对象?).

    那么答案是1、2还是其他?你能解释一下为什么吗?我倾向于1,因为存储库只能发送我想要的数据(或者2能够像Lazylist一样延迟访问数据?)代码示例(或网站链接)将非常有用。

    例子:

    1. product product=repo.getproducts(mysortobject,myfilterobject);//poco列表
    2. product.addfilter(“价格”,“lessthan”,“3.99”);product.addsort(“价格”,“降序”);
    2 回复  |  直到 15 年前
        1
  •  2
  •   Mike Two    15 年前

    这不是一个完整的答案,但是您可能想看看CQR(命令查询职责分离)背后的一些想法(可以找到一些很好的链接 here )

    CQR是一种思考DDD的方法,可以帮助澄清其中的一些问题。这比你具体的问题要高,但可能会有所帮助。

    从本质上来说,我认为这只会帮助你决定采用你的第一个选择(这也是我在类似情况下的结果)。我们称之为查询对象。

        2
  •  2
  •   Kane    15 年前

    我个人会同意你的第一个选择。

    如果您从DDD的角度考虑第二个选项,我假设产品对象是您的域对象,它了解一些实际上不是您试图解决的业务问题(即您的域)的内容。而是在用户界面或其他后端处理组件中使用排序和过滤。

    此外,从单一责任(亦称可靠)的角度来看第二个选项时,您会发现 Product 业务对象负责排序和过滤,这与产品完全无关。

    我就是这样看待事情的。我会对别人的意见感兴趣。

    推荐文章