This answer表示我们不能通过private
构造函数一次实例化多个对象。我修改了正好相反的代码:为什么我们需要一个私有构造函数?
class RunDatabase{
public static void main(String[] args){
Database db = Database.getInstance("hello");//Only one object can be instantiated at a time
System.out.println(db.getName());
Database db1 = Database.getInstance("helloDKVBAKHVBIVHAEFIHB");
System.out.println(db1.getName());
}
}
class Database {
//private static Database singleObject;
private int record;
private String name;
private Database(String n) {
name = n;
record = 0;
}
public static synchronized Database getInstance(String n) {
/*if (singleObject == null) {
Database singleObject = new Database(n);
}
return singleObject;*/
return new Database(n);
}
public void doSomething() {
System.out.println("Hello StackOverflow.");
}
public String getName() {
return name;
}
}
而且正如预期的那样,这两个字符串正在被打印。我错过了什么?
是啊,你错过了您的statment(的问题),exlusivly refered到'singleton'的部分。 – SomeJavaGuy
答案并不是说这样的事情。私有构造函数仅仅是一种强制单例模式的方式。你只能在主课内进行欺骗。 – f1sh
使构造函数'private'成为实现单例模式所需要做的事情之一。但它不是唯一的,只是这本身并不会自动使它成为单身。 – Jesper