我从我的存储库中获得了一个项目列表。现在我需要对它们进行排序和过滤,我相信这会在存储库中完成以提高效率。我认为以 DDD 方式执行此操作有两种方法:
- 向 Repository 发送一个过滤器和一个充满条件的排序对象(这叫什么)?
- 存储库结果会产生一个带有 .filter 和 .sort 方法的对象?(这不会是 POJO/POCO,因为它包含多个对象?)。
那么答案是 1、2 还是其他?你能解释一下为什么吗?我倾向于#1,因为存储库只能发送我想要的数据(或者#2 能够延迟访问像 LazyList 这样的数据?)代码示例(或网站链接)将非常有帮助。
例子:
- 产品 product = repo.GetProducts(mySortObject, myFilterObject); // Poco 列表
- product.AddFilter("price", "lessThan", "3.99"); product.AddSort("价格", "降序");