Tag: ocp

开放封闭原则和Java“最终”修饰符

开放封闭原则指出“软件实体(类,模块,function等)应该是可以扩展的,但是对于修改是封闭的”。 然而,Joshua Bloch在其着名的书“Effective Java”中给出了以下建议:“inheritance的设计和文档,或者禁止它”,并鼓励程序员使用“final”修饰符来禁止子类化。 我认为这两个原则显然是相互矛盾的(我错了吗?)。 在编写代码时,您遵循哪个原则,为什么? 你是否打开你的课程,不允许inheritance你的课程(哪些?),或尽可能使用最终修饰语?