使用CRUD方法违反单一责任原则的课程?

时间:2017-12-18 15:34:44

标签: spring solid-principles single-responsibility-principle

我正在努力理解单一责任原则。我有以下问题。

  1. 单一责任原则(SRP)规定永远不应该这样做 课程改变的原因不止一个。 通常我们的资源,服务和存储库类都有 创建,读取,更新和删除方法。我们正在改变每个班级 修改任何这些操作的代码。它是否违反了SRP?我们需要 每个动作都有单独的课程?

  2. 当我运行声纳lint时,我看到了以下消息。

    类不应该与太多其他类耦合。

    这里我使用spring DI注入其他类。是否有任何限制 依赖数量?

  3. 我可能错过了这个概念的症结。请通过示例

    更好地了解这一概念

2 个答案:

答案 0 :(得分:3)

SRP声明该类应该只做一件事,比如在存储库的情况下持久化实体。我猜你在这里混淆了“class”和“object”:如果你有几种方法可以改变对象的状态,那么这可能与SRP一致。但是,存储库更改的唯一原因应该与其目的有关,即在这种情况下持久化或检索实体。

关于Single Responsibility Principle的维基百科文章非常清楚。

对于你的第二点:没有类可以拥有的最大依赖数,但如果有很多依赖,它可能是设计弱点的标志。

答案 1 :(得分:2)

  

单一责任原则(SRP)规定应该这样做   从来没有超过一个理由让班级改变。

单一责任原则并不意味着单个方法或组件/类别的单一类型的操作。
这意味着单一责任

持久性操作是同一事项的一部分 因此,将它们全部放在一个单独的课程中并不违反必要的原则。

现在,如果你有十几个特定的​​数据库操作,那么将它们分成具有明确责任的不同类是有意义的,例如选择操作,更新操作等等。

  

通常我们的资源,服务和存储库类都有   创建,读取,更新和删除方法。我们正在改变每个班级   修改任何这些操作的代码。它是否违反了SRP?

这些是不同的层 如果更改图层的模型,则其他图层通常会在图层之间传递数据时受到影响 就像在数据库中添加信息一样,如果要查看/操作它们,您需要更改GUI和处理。

现在,如果您更改图层的实现,其他图层应该没有或只有很少的后果。