gpt4 book ai didi

java - 在 Java 中定义公共(public)库接口(interface)

转载 作者:搜寻专家 更新时间:2023-11-01 03:37:33 25 4
gpt4 key购买 nike

<分区>

在 Java 中定义库的公共(public)接口(interface)有哪些选项。

例如,我经常发现一些东西是公开的,因为库中的另一个包需要它们(尽管仍然有一个公共(public)基础包,例如 com.stackoverflow.mylib。),所以它们不能具有包访问级别,并且通常人们不想要大量的包(似乎使用 Spring 的人也坚持拥有单独的 Controller /服务/模型/impl/等包,导致单个“功能”被迫跨越许多包,当说给定的服务可能是一个完全内部的实现细节,不供外部使用...)。

所以理想的目标是让我提供给第 3 方的 Jar 清楚地表明这些东西不会被使用,最好是完全不提供它们(API jar 中不存在),这样它他们不可能使用和编译这些内部对象/方法。

对于只应该从某种工厂(例如提供的 Spring Bean)获取的对象,更理想的是一种防止从其代码或自定义 bean 直接实例化的方法(这可能会留下一些 future 的,尚未初始化的属性升级后)。

目前我知道的两种正式方式是:

  • 在我做过的一些项目中,有一个api包(例如com.stackoverflow.mylib.api),规定只有这个包的内容可以被外部用户直接访问。
  • 在我从事的其他一些项目中,有一些自定义属性,例如@PublicSDK 标记供公众使用的对象和方法(我认为一些额外的东西可以确保只有这样标记的东西才会出现在公开分发的 javadoc 和 api jar 中)。

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