gpt4 book ai didi

java - 什么相当于封装包内部功能的包私有(private)接口(interface)?

转载 作者:行者123 更新时间:2023-11-30 11:24:55 25 4
gpt4 key购买 nike

我试图封装服务包的所有内部功能。我的大部分类和方法都是包私有(private)的。我有一些我不想在包外公开的内部接口(interface)。我可以使接口(interface)本身成为包私有(private)的,但是所有方法仍然是公共(public)的(接口(interface)方法的默认范围)。

我有哪些选择可以从该包的内部实现中消除公共(public)方法签名?

我正在使用接口(interface),以便我可以使用 spring 轻松切换实现。

需要考虑的一些事情:使用源代码分析的开发工具会将接口(interface)方法报告为公共(public) API 方法。例如,UML 生成器会生成误导性的 UML 图,错误地将此显示为公共(public)方法。

最佳答案

正如@Bart 已经指出的那样,一种可能的解决方案是使用抽象类而不是接口(interface)。与此概念相关的一个可能问题是单一继承问题。

另一种解决方案可能是将“私有(private)”接口(interface)分离到不同的包中,不需要与您的服务包一起发布,认为这种方法会完全破坏接口(interface)的语义,特别是如果一个逻辑接口(interface)有“私有(private)”和“公共(public)”部分。

想到的最后一个解决方法是使用一些模式,例如Double dispatchVisitor可能会有用。

关于java - 什么相当于封装包内部功能的包私有(private)接口(interface)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20507008/

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