我们有一个Shared Utilities项目,两个独立的SDK项目(每个都指的是Utilities)和一些插件项目,每个项目只使用其中一个SDK。 Shared Utilities包含一些全静态类,需要对所提到的插件可见,但我们希望隐藏其余的类。
我们如何解决问题?我们希望尽可能简化构建过程(我们将Ant用于构建),并尽可能减少依赖。
这是我们到目前为止所考虑的选项,以及为什么我们放弃了每种方法:
答案 0 :(得分:0)
“通过代理类公开静态方法” 我已经阅读了你的完整问题,我不确定你的问题到底是什么。 通过代理(实例)公开静态(非实例相关)方法。
你不想隐瞒什么。你想要揭示究竟是什么。
public class A {
private A(){} //prevent instanciation
public static void doSomething(){} //want to expose to some class, hide from other
}
要限制对doSomething的展示,您可以设置可见性:Controlling Access to Members of a Class。
您还可以删除静态属性并使用静态工厂模式返回对象,如:
public class A {
private A(){}
public void doSomething(){} //want to expose to some class, hide from other
//the new A can also be set in a member variable and
//return always the same instance, if it is unmuttable it will be thread safe.
public static A getInstance(){ return new A();}
}
这可能看起来像“相同的东西”,但你现在可以通过仅控制getInstance()的可见性来控制A中所有方法的可见性,javadoc保留在A上,现在可以精确控制getInstance的方式访问...我必须完全理解你想要做什么。