我正在努力理解单一责任原则。我有以下问题。
单一责任原则(SRP)规定永远不应该这样做 课程改变的原因不止一个。 通常我们的资源,服务和存储库类都有 创建,读取,更新和删除方法。我们正在改变每个班级 修改任何这些操作的代码。它是否违反了SRP?我们需要 每个动作都有单独的课程?
当我运行声纳lint时,我看到了以下消息。
类不应该与太多其他类耦合。
这里我使用spring DI注入其他类。是否有任何限制 依赖数量?
我可能错过了这个概念的症结。请通过示例
更好地了解这一概念答案 0 :(得分:3)
SRP声明该类应该只做一件事,比如在存储库的情况下持久化实体。我猜你在这里混淆了“class”和“object”:如果你有几种方法可以改变对象的状态,那么这可能与SRP一致。但是,存储库类更改的唯一原因应该与其目的有关,即在这种情况下持久化或检索实体。
关于Single Responsibility Principle的维基百科文章非常清楚。
对于你的第二点:没有类可以拥有的最大依赖数,但如果有很多依赖,它可能是设计弱点的标志。
答案 1 :(得分:2)
单一责任原则(SRP)规定应该这样做 从来没有超过一个理由让班级改变。
单一责任原则并不意味着单个方法或组件/类别的单一类型的操作。
这意味着单一责任。
持久性操作是同一事项的一部分 因此,将它们全部放在一个单独的课程中并不违反必要的原则。
现在,如果你有十几个特定的数据库操作,那么将它们分成具有明确责任的不同类是有意义的,例如选择操作,更新操作等等。
通常我们的资源,服务和存储库类都有 创建,读取,更新和删除方法。我们正在改变每个班级 修改任何这些操作的代码。它是否违反了SRP?
这些是不同的层
如果更改图层的模型,则其他图层通常会在图层之间传递数据时受到影响
就像在数据库中添加信息一样,如果要查看/操作它们,您需要更改GUI和处理。
现在,如果您更改图层的实现,其他图层应该没有或只有很少的后果。