【发布时间】:2017-12-01 12:06:05
【问题描述】:
我理解这个原则表明一个模块对扩展开放但对修改关闭,当我们想要升级/修改某个类中的方法时,这一点很清楚——我们创建另一个继承基类的类,然后覆盖此处的基本方法是为了保留这两个功能。
但是当我们想向基类添加另一个不同的方法时,情况如何呢?这是否被视为对基类的修改或扩展 - 可以将方法添加到基类,还是我们也应该创建继承基类的新类,然后将新方法放在那里?
另外,向基类添加属性和字段的问题也是一样的。
【问题讨论】:
-
是否可以选择修改界面?并回答您的问题 - 我将其视为更改而不是扩展。至于方法,您是否考虑过扩展方法,根据定义是扩展原始功能?
-
开放封闭原则的真正含义是,当您想为流程添加更多功能时,您不必更改原始流程。
-
@Konrad Viltersten 我可能是错的,但我认为只有当你想扩展你不拥有的类的功能时才首选扩展方法。
-
我对OCP的理解如下:你的系统应该被设计成如果你想扩展它,你编写新代码而不是重写旧代码
-
我不同意那些声称这个问题是基于意见的投票结果。我们正在讨论一个完善的 SOLID 原则,以及某个行为是否违反了这一原则。这不是意见。