微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

将具体类设为 final 是一个好习惯吗?

如何解决将具体类设为 final 是一个好习惯吗?

开闭原则是面向对象设计的五个 SOLID 原则之一。它指出“软件实体(类、模块、函数等)应该对扩展开放,对修改关闭”。

但是最近大多数编程语言都通过提供诸如 final 之类的关键字来提供一种终结类的方法,以便将来不会继承它。某些语言(如 Kotlin)在认情况下将它们的类设为 final(即选择加入开放式)。

我还阅读了一些文章,其中指出接口继承必须优先于实现继承,并具有有效的推理,例如脆弱基类问题。但是 OCP 告诉类应该对扩展开放。那么我应该考虑宣布我的课程开放吗?还是最终?一般来说,哪个是好的做法?

解决方法

我认为不会!

这背后的主要原因如下所述。

开闭原则以一种非常直接的方式攻击这一点。它说你应该设计永不改变的模块。当需求发生变化时,您可以通过添加新代码来扩展此类模块的行为,而不是通过更改已经可用的旧代码。”

所以我们可以说它是任何代码的结构格式!

,

继承只是用于实现 OCP 的技术之一。策略模式、装饰器模式、普通组合、参数多态和其他技术也可以用来实现这些目标。继承始终是一种选择,但应尽可能避免。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。