加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Java > 正文

如何使用私有Java类进行有效的API设计

发布时间:2020-12-15 08:48:54 所属栏目:Java 来源:网络整理
导读:我正在编写我的第一个“API jar”,它将是开源库并由(可能)其他开发人员使用.我读过 Joshua Block’s thesis on effective API design,他谈到的其中一件事 – 我从来没有想到过 – 是他最小化访问和最大化信息隐藏的概念.基本上,您只希望您的API开发人员能够
我正在编写我的第一个“API jar”,它将是开源库并由(可能)其他开发人员使用.我读过 Joshua Block’s thesis on effective API design,他谈到的其中一件事 – 我从来没有想到过 – 是他最小化访问和最大化信息隐藏的概念.基本上,您只希望您的API开发人员能够访问他们将使用的Java对象,并且您不希望您的API开发人员能够访问您库中的任何“内脏”.

在我作为Java开发人员的几年中,我从来没有必要创建除了public之外的任何类.此外,我从未使用过嵌套类.所以我坐在这里想知道如何在我的Java API中实现这种“信息隐藏”最佳实践?我认为私有的,可能是嵌套的类是答案.但从哪里开始?

>每个.java源文件都需要至少一个公共类来编译.因此,对于我来说私有(和非嵌套)类,我需要“将它与公共类捆绑在一起.对我来说,这只有在公共/私有类密切相关时才有意义.但是,如果我有一个部分我的API只包含与任何其他公共类比无关的私有类(用于可访问性最小化目的)?
>什么时候嵌套私有类,何时使其嵌套?或者只是一个偏好问题?

解决方法

就个人而言,我不相信私人.在可行的情况下,我使用保护,以允许OO设计的一些主要好处.

基本上,“信息隐藏”原则并不是一个指南.但是,在实践中,不应该在所有情况下盲目地遵循它. – 对于纯粹的原则,正如其他人所建议的那样,你需要将一组接口定义为公共接口,并使用包私有类,工厂方法等隐藏所有其余的lib.鉴于Java的包 – 私有可见性存在一些问题,在许多情况下(在您的lib中的类将希望跨包合作 – )这有点无用,这反过来似乎阻止了这种方法.

此外,API总是至少有两种类型的用户:基本用户,谁将使用您提供的对象和方法,以及具有复杂需求的用户,他们希望通过继承来修改API的行为(至少),很多’隐藏’的东西会成功阻止.

不要害羞地把这些东西公之于众,这些东西可能是有意义的,保护那些并非真正需要公开的东西,并且只有那些可能造成伤害的私密东西如果直接被除了直接相关的代码之外的任何东西访问.

另一个注意事项:隐藏原则的主要目的是简化其他人对代码的使用,并暗示和鼓励正确使用代码.但请记住,文档是实现这一目标的另一个重要手段;无论如何,图书馆都需要文档. – 如果您有100个公共方法,并且您的文档说明用例需要10个这样的用户,那么您的lib的用户可能会与他一样好,如果他只能看到那10个那么.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读