C# 单一责任原则是否与等级直接相关;依赖关系?
如果一个类通过接口依赖于一个以上的其他类,那么这是违反SRP的行为,还是只有当两个接口都预期会改变时才违反SRP的行为,或者这是完全错误的想法?原则上,SRP与该类可能具有的依赖性以及依赖性的数量完全正交C# 单一责任原则是否与等级直接相关;依赖关系?,c#,single-responsibility-principle,C#,Single Responsibility Principle,如果一个类通过接口依赖于一个以上的其他类,那么这是违反SRP的行为,还是只有当两个接口都预期会改变时才违反SRP的行为,或者这是完全错误的想法?原则上,SRP与该类可能具有的依赖性以及依赖性的数量完全正交 一个类可以有一个单一的职责,但如果该职责执行起来很复杂,那么它可能会依赖于负责琐碎工作的“分包商”。本质上,你的单一责任是“协调这些人,使X发生”。不一定。一个类仍然可以有一个职责,但有多个依赖项。拥有多个依赖项通常是一个类正在做很多事情的标志,但这并不能证明这一点。如果该类只是在这些依赖接口
一个类可以有一个单一的职责,但如果该职责执行起来很复杂,那么它可能会依赖于负责琐碎工作的“分包商”。本质上,你的单一责任是“协调这些人,使X发生”。不一定。一个类仍然可以有一个职责,但有多个依赖项。拥有多个依赖项通常是一个类正在做很多事情的标志,但这并不能证明这一点。如果该类只是在这些依赖接口上调用方法,那就不会违反SRP,因为它正在协调一个在不同组件上调用不同方法的过程,这就是责任所在
如果没有特定的上下文,很难给出准确的答案,但简而言之:具有多个接口的依赖关系本身并不违反SRP。谢谢,这很有意义。如果我认为这个原则意味着一个类应该只有一个改变的理由,这难道不意味着依赖性吗?@Ford:不,“理由”的意思是“你可能想要改变这个类的行为的方式”。依赖关系是(或应该是)接口类型,因此将
IDependency
的一个实现替换为另一个并不是改变的理由;事实上,它甚至可能不会导致一行代码的更改。