作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在研究单一职责原则(SRP)和开放封闭原则(OCP)。
SRP 声明一个类必须只有一个改变的理由。
OCP 声明该类必须对修改关闭,但对扩展开放。
我觉得这很矛盾。一个原则是类必须足够简单,你改变的原因只有一个,但另一个原则是类不能改变,只能扩展。
有没有人有更好的解释?
最佳答案
单一职责原则处理这样一个事实,即如果一个类有多个职责,如果它们在一个类中,这些职责将紧密耦合。
因此,如果一个接口(interface)或算法因一个职责而改变,它很可能也会影响另一个职责,这是一种不希望的影响。
在开放/封闭原则中,类应该能够扩展其行为而无需修改类本身。唯一需要修改类应该是因为它有错误/错误,而不是因为您想更改或添加功能。
例如(OCP):包含硬编码对象类型列表的类不开放扩展,因为如果要向列表中添加新类型,则需要修改该类。相反,更好的设计是当类具有添加或删除功能,或者您可以实现的接口(interface)来保存每个子类的不同类型。
关于oop - 开放封闭与单一责任,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31018554/
理想情况下,Spring MVC 应用程序中的 Controller 必须接收请求、将请求发送到 API、将(调用的)结果加载到模型(以便 View 随后呈现它)并转发到 View 。他们不应该再做了
我是一名优秀的程序员,十分优秀!