Да, я знаю .. Я бы не стал делать это с помощью единственного соединения, если бы я не был обязан.
С учетом сказанного, скажем, я хочу создать одноэлементный класс, скажем, DBConnection, с переменной sql Connection, и, скажем, я хочу, чтобы класс загружал информацию из файла о ip базы данных, пользователе и т. Д. Внутри своего конструктора.
Как я могу установить переменную Connection в качестве окончательного статического значения, если мне нужно сначала проанализировать данные из файла, прежде чем присваивать ему значение?
Код до сих пор (игнорируйте отсутствующую синхронизацию в getConnection):
final public class DBConnection {
transient private static Connection con;
private DBConnection()
[parse file, make url]
con = DriverManager.getConnection(url);
[...]
}
public static Connection getConnection(){
if (con == null)
new DBConnection();
return con;
}
}
Пожалуйста, также расскажите, есть ли что-то неловкое в классе, по одному.
В некотором смысле, может быть, мне все-таки не следует иметь его как окончательный, в случае, если соединение закрывается, и мне нужно создать новый getConnection, но это, вероятно, будет плохой одноэлементный класс, не так ли?
РЕДАКТИРОВАТЬ решил изменить мой подход и сделать его enum way
public enum Connect {
INSTANCE;
private Connection con;
Connect (){
[parse file]
con = DriverManager.getConnection(url);
[...]
}
public Connection getCon(){
return con;
}
Однако, как мне убедиться, что никто не пытается
Channel.INSTANCE.getCon
до завершения конструктора?