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