我在研究单一职责原则(SRP)和开放封闭原则(OCP)。
SRP指出一个类只应该有一个导致它发生变化的原因。 OCP指出这个类应该对修改关闭但对扩展开放。
我觉得这两个原则是相互矛盾的。一个原则要求类足够简单,只有一个原因需要改变,而另一个原则则要求类不能被修改,只能被扩展。
有没有更好的解释呢?
我在研究单一职责原则(SRP)和开放封闭原则(OCP)。
SRP指出一个类只应该有一个导致它发生变化的原因。 OCP指出这个类应该对修改关闭但对扩展开放。
我觉得这两个原则是相互矛盾的。一个原则要求类足够简单,只有一个原因需要改变,而另一个原则则要求类不能被修改,只能被扩展。
有没有更好的解释呢?
让我们将所有的责任和变更原因表示为一个二维圆圈。
SRP -> 要求我们在该圆圈的边缘切削(哈哈),以便剩下的部分非常紧密耦合,如果它发生变化,它将同时改变。
OCP -> 要求我们在该圆圈上打洞,以便那些以不同速度变化的部分可以在以后提供。
换句话说,符合SRP的类可能会违反OCP,而符合OCP的类可能会违反SRP。两者之间也有显著的重叠,但我的演示还显示了差异。