nra*_*ner 10 java information-hiding jar facade factory-pattern
是否真的不可能在jar文件中隐藏某些类?
我希望不允许直接实例化类以使其更灵活.这个罐子里只能看到工厂(或立面).
除了创建两个项目之外,还有其他办法解决这个问题吗?(两个项目:第一个包含类(实现),另一个引用第一个并包含工厂;后面只引用第二个)
我理解你不是要隐藏实际的课程,只是防止他们在工厂外面建造.我认为通过在类构造函数中使用包私有(默认)可见性可以很容易地实现这一点.唯一的限制是您需要将类和工厂放在同一个包中,因此在中型到大型代码库中,事情可能会变得不必要地复杂化.
我认为如果您的公共工厂方法尝试返回“隐藏”的内容,您将会遇到编译器失败或警告。
不,您不能在不重新实现自己的类ClassLoader
或使用 OSGi 或类似的东西的情况下隐藏公共类。
您可以做的是将接口 api 与实现分开,例如,有一个仅包含接口的项目和另一个包含实现的项目。但是,您仍然无法隐藏实现类。