gpt4 book ai didi

android - 为什么许多 Android API 类是非最终的,即使它们没有明确记录继承?

转载 作者:塔克拉玛干 更新时间:2023-11-02 22:22:55 26 4
gpt4 key购买 nike

Effective Java(Joshua Bloch)第 17 条说:

"Design and Document or inheritance or else prohibit it"

但是,只要粗略地浏览一下 Android API,就会发现大多数 API 类都是非最终的;如果它们也被记录为继承(例如,ActivityView),这就没问题了。但是也有几个非最终类,但是文档没有提到这些类的可继承性。只是一些任意的例子来说明我的观点:

  • 表示系统服务的类(WifiManagerNotificationManager ...)
  • 实用程序类,例如 UriMatcher
  • 一些特定于硬件的类,例如 Camera

开放性和可扩展性是 Android 的哲学,这里的约定是不是颠倒了?意思是,是否可以假设所有 Android API 类都设计为可继承(无论是否明确记录或以其他方式);除非宣布最终?

最佳答案

只是我的 €0,02:按照书本进行干净的 OO 设计是一回事,让事情在实践中适用于 所有 可能的用例是另一回事。干净的 OO 设计原则有时有点学术性质。 - 也许还有一点黑白。

例如,想想使用谷歌提供的 Android API:不仅是应用程序开发人员,还有设备制造商需要为其设备专门化通用 API。

所以,对我来说,软件设计在大多数情况下既非黑也非白;灰色阴影很重要。

最后:在实践中,我很少(读作:从不)看到由“不小心”省略 final 关键字(在类上)引起的问题,而未反射(reflect)过度使用 final(通常由诸如“我的代码太棒了 [伟大|丑陋],实际上没有人想要通过继承修改它”这样的想法引起) 可能会很痛苦。

“我知道我什么都不知道”似乎很适合这里:声称一个人知道所有其他人的疯狂、巧妙、创造性、聪明......的想法是自以为是的将来可能会使用代码。

关于android - 为什么许多 Android API 类是非最终的,即使它们没有明确记录继承?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8091624/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com