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