【发布时间】:2016-06-10 01:07:46
【问题描述】:
在我看来,Bob Martin 需要一些以 O 开头的东西来制作 SOLID,并在一些旧书中发现了这个(可能没用的)开放/封闭原则。
Open/Closed 如何与 Single Responsibility 共存,这表明一个类应该有一个单一的改变原因?
如果我想在一个长期存在的系统中遵循 Open/Closed,我是否应该拥有数十/数百个类的链,每个类都扩展前一个?
【问题讨论】:
-
这个问题的答案是“是”,这将是一个非常糟糕的答案......
-
这对于 SO 来说可能过于开放了——但我发现这两个帖子在考虑 SOLID 时很有用:accu.org/index.php/journals/1957 和 accu.org/index.php/journals/1957
-
它们相辅相成。 A) 类应该只做一件事,但是 B) 如果它们的行为可能被扩展,它们应该以这样一种方式编写,即它们可以被扩展而不会被撕开。每次扩展课程时,您都应该确保它仍然遵守 A)。如果没有,很可能是时候重构了。
-
Robert C. Martin 在首字母缩略词出现之前编纂了这些原则。 Michael Feathers 后来添加了这个首字母缩略词。见the tag info for solid-principles。
标签: oop design-patterns solid-principles open-closed-principle