помогите, пожалуйста
решил две однотипные задачи - в чем их суть?
№1
public class OurPresident {
private static OurPresident president;
static {
synchronized (OurPresident.class) {
president = new OurPresident();
}
}
private OurPresident() {
}
public static OurPresident getOurPresident() {
return president;
}
}
№ 2
public class IMF {
private static IMF imf;
public static IMF getFund() {
//add your code here - добавь код тут
synchronized (IMF.class){
if(imf == null) {
imf = new IMF();
}
}
return imf;
}
private IMF() {
}
}
насколько я понял, первая задача не реализует паттерн Singleton, потому что есть возможность создать другой объект, а во второй задачи создается и выводится только один объект - это я про проверку if(imf == null) {
imf = new IMF();
}
правильно ли понимаю? если ошибаюсь и первая задача все-таки реализует паттерн Singleton, то какой из этих двух способов записи правильный?
то есть где нужно инициализировать private static переменную - в блоке static или в методе public static *** get***() {}
, где *** - имя класса