【发布时间】:2015-09-10 04:23:53
【问题描述】:
我正在研究单一职责原则 (SRP) 和开放封闭原则 (OCP)。
SRP 声明一个类必须只有一个改变的理由。 OCP 声明类必须对修改关闭,但对扩展开放。
我觉得这很矛盾。一个原则是类必须足够简单,您可以出于单一原因进行更改,但另一原则是类不能更改,只能扩展。
谁有更好的解释?
【问题讨论】:
-
他们并不矛盾。扩展不是修改。
-
埃德·科特雷尔。是的。这就是我要说的。 OCP 状态不修改类,只扩展它,而 SRP 状态只有一个修改原因。你有没有读过我的问题?
-
我读了你的问题。关键是这些不是不相容的陈述。 SRP 并不意味着课程永远不会改变。这意味着他们应该只有一个 原因 进行更改,例如底层业务逻辑或第三方库是否需要更改。 OCP 意味着您需要对类执行的任何其他操作都应该由扩展完成,而不是修改。
标签: oop design-patterns solid-principles