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 refered к 'singleton'. – SomeJavaGuy
Ответ не говорит об этом. Частные конструкторы - всего лишь способ обеспечения синглтонного шаблона. Вы только обманываете его, имея свой основной внутри этого класса. – f1sh
Создание конструктора 'private' является одной из вещей, которые вам нужно сделать для реализации шаблона singleton. Но это не единственное, и только это само по себе не делает его одиночным. – Jesper