Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/design-patterns/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Design patterns 存储库模式:在何处放置涉及多个实体的功能?_Design Patterns_Repository Pattern - Fatal编程技术网

Design patterns 存储库模式:在何处放置涉及多个实体的功能?

Design patterns 存储库模式:在何处放置涉及多个实体的功能?,design-patterns,repository-pattern,Design Patterns,Repository Pattern,我正在使用Repository模式,并且已经使用了很长时间,但是有一件事我从来没有找到一个好的解决方案。通常,我需要访问与多个实体相关的数据,但我找不到一个好的解决方案来放置该功能。少数情况: 假设系统中存在具有任务的用户: 我需要检索每个用户的最新任务列表,作为用户对任务的配对,例如作为字典getusersrenttask() 我需要生成当月所有用户及其任务的报告 我需要生成系统中所有对象的统计信息 现在通常我会把它放在用户存储库中,但感觉不太对劲 我也尝试过将其放在更高级别的服务中,但将

我正在使用Repository模式,并且已经使用了很长时间,但是有一件事我从来没有找到一个好的解决方案。通常,我需要访问与多个实体相关的数据,但我找不到一个好的解决方案来放置该功能。少数情况:

假设系统中存在具有任务的用户:

  • 我需要检索每个用户的最新任务列表,作为用户对任务的配对,例如作为
    字典getusersrenttask()
  • 我需要生成当月所有用户及其任务的报告
  • 我需要生成系统中所有对象的统计信息
现在通常我会把它放在用户存储库中,但感觉不太对劲

我也尝试过将其放在更高级别的服务中,但将数据访问放在那里感觉不太对


所以我最好把它放在哪里。

< P>不要认为知识库模式是教条。这只是一个概念。因此,UsersRepository有GetUsersRecentTask,您有不同的存储库,例如:带有GetUsersReport(包括任务)的ReportsRepository和带有Get[Object]Stats的StatisticsRepository

虽然存储库模式最初只处理业务对象,但如果您需要“较小”的对象,例如视图模型或报表数据,而这些对象只是数据结构(没有行为),那么它仍然是一个不错的模式。因此,向ReportsRepository索要某份报告是有道理的

您唯一需要注意的是,一些存储库处理业务对象,而其他存储库处理DTO