使用包私有构造函数从外部模块实例化类



我想使用包私有构造函数,以防止从外部实例化某个对象。唯一能够实例化类的是位于同一个包中的工厂类。

我担心的是,如果我的应用程序被编译和密封,唯一可能的方法是提供具有包私有作用域的新类,它可以被相同的工厂(或者为什么不是工厂的新实现)访问,将模仿项目中引用我的密封库的包的完全相同的路径。

虽然这绝不是不可能的,我只是想知道这是否应该被视为一个好的做法。您如何看待在这种意义上使用的包私有作用域?

应该是这样的。我也没有别的办法来达到这个目的。

但是,在我看来,这样做通常不是很有建设性。可能在一些极端情况下会禁止其他超出预期的用法,但总的来说,我认为您应该尝试建立工厂,因为它易于使用,并以此说服人们。如果你的工厂是不可扩展的,人们可能最终在"你的"包中创建类只是为了像他们想要的那样访问你的类。

最新更新