我有以下情况:
我有一个带有 A 类的包 x,它使用 B 类和 C 类。 B 类和 C 类的访问级别是包私有(private)的。 B 和 C 实现相同的公共(public)接口(interface) I。
为了更好地组织代码,我想将类 B、C 和 I 分组到另一个包 y 中,但不将访问级别更改为公共(public)。
我该怎么做?除了在包 y 中创建公共(public)代理类 D 以及一些生成 I 实例的静态工厂之外,还有其他方法吗?
亲切的问候, 六甲_11
最佳答案
不要让“现状”决定您的设计决策。
你已经在进行“重构”;那么:如果有充分的理由让 B 和 C 可见;然后将这些类的重要部分公开。如果没有,就不要这样做;并保持包本地化。
这实际上取决于您的具体应用;以及今天如何使用 B 和 C。 stackoverflow 上的其他人无法做出此决定。
旁注:只是因为你需要一个工厂;这并不意味着事情需要是静态的。相反 - 你想尽可能避免“静态”的东西;因为不明智地使用“静态”常常会破坏您进行合理单元测试的能力。
关于java - 包结构的最佳实践,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35771279/