【问题标题】:Single Responsibility Principal and Repository or Application Service classes单一职责主体和存储库或应用程序服务类
【发布时间】:2023-04-01 10:55:02
【问题描述】:

正如SRP所说:

一个类或模块应该有一个,并且只有一个改变的理由

我的每种类型的实体(每种类型,一个存储库)都有一些存储库类,它们实现了CRUD 操作。 因此,这些类型的存储库类似乎有不止一个改变的理由,例如每个查询条件都可能改变等等。

我认为这种情况也发生在应用程序服务类中。

我的问题是:

  • 是否会导致使用此类存储库或应用程序服务类违反 SRP?
  • 如果违反,我该如何处理这个问题?

【问题讨论】:

  • 你能想到的不止一个原因是什么?
  • @Fendy:例如 1-向某些方法添加一些验证,2-更改一些查询

标签: design-patterns repository crud single-responsibility-principle conceptual


【解决方案1】:

恕我直言,SOLID 纯粹主义者会争辩说,是的,不断修改存储库以添加表示各种查询的新方法会违反 SRP。但是,我认为这种存储库设计方法已被合理地接受。

对于单独的查询,您可以使用规范模式来概述您的查询。如果您修改存储库以接受规范,那么它们应该对开发新查询的修改关闭。

【讨论】:

  • 谢谢,应用服务类呢?
  • 我真的不知道应用程序服务类是什么。能举个例子吗?
  • 外部消费者用来与我的系统对话的应用程序服务(想想 Web 服务)。如果消费者需要访问 CRUD 操作,他们将在这里公开。它像 Facade 一样工作。
猜你喜欢
  • 1970-01-01
  • 2012-02-13
  • 2011-03-03
  • 1970-01-01
  • 2011-07-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-03-11
相关资源
最近更新 更多