【发布时间】:2018-04-10 13:56:17
【问题描述】:
我正在用 android 中的模块做一个项目,在每个模块中,我都有带有各自实体、存储库等的子包。要处理这个包中的访问,我必须使用公共类,这可以访问其他模块。我需要一个类/包用作 API,可以从其他模块访问并隐藏内部实现。 我不知道java是否允许这样做?我该怎么做?
谢谢
【问题讨论】:
我正在用 android 中的模块做一个项目,在每个模块中,我都有带有各自实体、存储库等的子包。要处理这个包中的访问,我必须使用公共类,这可以访问其他模块。我需要一个类/包用作 API,可以从其他模块访问并隐藏内部实现。 我不知道java是否允许这样做?我该怎么做?
谢谢
【问题讨论】:
从其他模块访问并隐藏内部实现
是的。将 API 提取到接口,然后使用低于公共接口的可见性修饰符定义该接口的实现。通过模块的 init 方法隐藏该接口到具体实现的绑定。将此 init 方法也公开给您的模块。
使用依赖注入或服务定位器模式,您可以从调用者模块请求此接口的实现。通常,在更复杂的应用程序中,您想要使用的是依赖注入。在这种情况下,需要一个工厂方法来绑定接口和具体实现。
如果您在 Java 中使用依赖注入库,那么您可能会考虑使用 @Binding 和 @Provides 方法来分别实现这种连接和配置。
【讨论】: