防止来自其他类的类实例化

我正在使用域,视图和控制器。 每个都包含自己的类。

该域包含许多不应在域外的类中实例化的类。 我的印象是默认访问修饰符会帮助我。 使我的域类的构造函数包可见。

在导入正确的package.class文件之后,任何类仍然可以使用构造函数。

我怎样才能防止这种情况发生?

当你说’在导入正确的package.class文件后,任何类仍然可以使用构造函数’。 我想你在谈论反思。 reflection是一个强大的概念,允许任意实例化类,即使它们只提供私有构造函数。 没有办法阻止某人使用reflection来实例化你的类。 可以使用reflection绕过类或构造函数修饰符(如private或protected)。

如果你想从类外部控制类的实例化,那么你可以创建它的private构造函数 –

 class A{ private A(){ // do some thing } public static getInstance(){ } } 

现在,现在可以从类的外部创建类A的实例。 但是如果外部世界真的需要类的实例,那么他们可以使用静态方法getInstance() 。 这种结构可以防止外部世界使用new关键字创建类的实例。

希望它会有所帮助。
谢谢。