我从存储库中获得了项目列表.现在,我需要对它们进行排序和过滤,为了提高效率,我相信可以在存储库中完成.我认为将有两种以DDD方式执行此操作的方法:
>将过滤器和一个充满条件的排序对象发送到存储库(这叫什么)?
>存储库结果会使用.filter和.sort方法生成一个对象吗? (这将不是POJO / POCO,因为它包含多个对象?).
那么答案1、2还是其他?你能解释为什么吗?我倾向于#1,因为存储库只能发送我想要的数据(或者#2可以像LazyList一样延迟访问数据?)代码示例(或网站链接)将非常有帮助.
例:
>产品product = repo.GetProducts(mySortObject,myFilterObject); // Poco清单
> product.AddFilter(“ price”,“ lessThan”,“ 3.99”); product.AddSort(“ price”,“ descending”);
解决方法:
这不是一个完整的答案,但是您可能想看看CQRS(命令查询责任隔离)背后的一些想法(可以找到here的一些很好的链接).
CQRS是一种关于DDD的思考方式,可以帮助澄清其中的一些内容.它的级别高于您的特定问题,但这可能会有所帮助.
从本质上讲,我认为这只会帮助您决定采用第一个选项(这是我在类似情况下最终得到的结果).我们称它为查询对象.