Это мой однопользовательский класс для получения соединения с базой данных.Почему это обязательное наличие частного конструктора внутри класса Singleton
У меня есть вопрос: почему он обязателен иметь частный конструктор внутри класса singleton (как и во всем моем приложении, я вызываю этот класс только один раз) и как один экземпляр класса может быть достигнут с использованием статического метода ?
Можно ли избежать этого частного конструктора, или это мантадативно?
public class ConnPoolFactory {
private static DataSource dataSource;
private static Connection connection;
private ConnPoolFactory() {
System.out.println(" ConnPoolFactory cons is called ");
}
public static synchronized Connection getConnection() throws SQLException {
try {
if (connection == null) {
Context initContext = new InitialContext();
Context envContext = (Context) initContext
.lookup("java:/comp/env");
dataSource = (DataSource) envContext.lookup("jdbc/Naresh");
connection = dataSource.getConnection();
} else {
return connection;
}
} catch (NamingException e) {
e.printStackTrace();
}
return connection;
}
}
Спасибо за ответы, но почему другие создадут экземпляр моего класса Singleton, так как это мое приложение, и у меня есть полный контроль над этим? – user1254422
Точно так же, как другие не будут получать доступ к вашим данным, если вы не объявите их частными: если вы единственный разработчик, работающий над проектом и имеющий полный контроль над ним, все в порядке. Но когда другие разработчики начнут в вашем проекте, они не будут знать, что им не разрешено создавать больше экземпляров вашего класса. И, кстати, вы тоже можете забыть об этом сами :) – Vlad
BTW: Это не синглтон, так как вам нужно создать один экземпляр где-то. У вас есть класс утилиты, который также должен иметь частный конструктор. –