2015-07-20 78 views
1

我想使用包 - 私有构造函数来防止从外部实例化某个对象。唯一能够实例化类的是一个工厂类,它驻留在同一个包中。使用来自外部模块的包 - 私有构造函数实例化类

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

虽然这绝非不可能,但我只是想知道它是否应该被认为是一种好的做法。你认为在这个意义上使用的包 - 私有范围是什么?

+0

我认为这是正确的,唯一可行的方法就是使用包专用作用域。如果你想让你的Factory类容易扩展,接口的使用可能更合适? – Ridcully

回答

0

它应该这样工作。我没有其他的想法来实现这一点。

但是,恕我直言,这样做通常不是非常有建设性的。可能会有一些角落案件禁止其他预期使用,但总的来说,我认为你应该尝试建立工厂,因为它的易用性和说服力。 如果你的工厂不是可扩展的,人们可能会最终在“你的”包中创建类,以便像他们想要的那样访问你的类。

相关问题