如何使用具有私有构造函数的类的实例?

Jav*_*yer 3 java oop

如果我们有A和B类,并且A类的构造函数是私有的,并且我们想在B中使用A的实例,该怎么做?我看到一个答案说"提供一个静态方法或变量,允许访问从类中创建的实例",但我不明白.

Boh*_*ian 5

您寻找的代码模式称为工厂方法.

该类提供了一个静态方法,该方法返回其自己的类的实例.私有构造函数对类的所有方法(包括静态方法)都是可见的,因此静态方法可以代表调用者调用私有构造函数.

以下是此模式的示例:

public class A {
    private A() {
    }

    public static A create() {
        return new A();
    }
}
Run Code Online (Sandbox Code Playgroud)

这通常与Singleton Pattern一起使用,这会将上面的示例更改为:

public class A {
    private static A INSTANCE = new A();

    private A() {
    }

    public static A getInstance() {
        return INSTANCE;
    }
}
Run Code Online (Sandbox Code Playgroud)