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;
}
}
期待どおりに両方の文字列が印刷されています。私は何か見落としてますか?
ええ、あなたはあなたなステートメント(質問)は、exlusivly 'singleton'に参照さ一部を逃しました。 – SomeJavaGuy
答えはそのようなことを言っていません。プライベートコンストラクタは単なるシングルトンパターンを強制する方法です。あなたは、そのクラスの中にあなたのメインを持つことによってそれを欺くだけです。 – f1sh
コンストラクタをprivateにすることは、シングルトンパターンを実装するために必要なことの1つです。しかし、それだけではなく、それだけで自動的にそれをシングルトンにするわけではありません。 – Jesper