【发布时间】:2021-05-17 18:45:35
【问题描述】:
开闭原则是面向对象设计的五个 SOLID 原则之一。它指出“软件实体(类、模块、函数等)应该对扩展开放,对修改关闭”。
但最近大多数编程语言都通过提供诸如final 之类的关键字来提供一种终结类的方法,以便将来不会继承它。像 Kotlin 这样的一些语言默认有它们的类 final(又名 opt-in open)。
我还阅读了一些文章,其中指出接口继承必须优先于实现继承,并具有有效的推理,例如脆弱的基类问题。但是 OCP 告诉我们应该为扩展开放类。那么我应该考虑宣布我的课程开放吗?还是决赛?一般而言,哪种做法是好的做法?
【问题讨论】:
标签: inheritance final open-closed-principle