Когда нужен синглтон, является ли статическое поле элегантным решением?Почему статический синглтон - это простое и изящное решение, чтобы избежать «DCL»?
class HelperSingleton {
static Helper singleton = new Helper();
public static Helper getInstance() {
return singleton;
}
}
Когда два потока доступ к getInstance
в то же время, есть шанс, что поле singleton
не инициализируется полностью? Или увидеть значения по умолчанию для полей вспомогательного объекта, а не значения, установленные в конструкторе? Статический синглтон также является ленивой инициализацией?
Я имею в виду, static Helper singleton = new Helper();
это этот атомный атом? И не вернет значения по умолчанию?
Должно ли getInstance() быть статическим? –
И должен быть частный конструктор. И «singleton» должен быть закрытым и окончательным. И в идеале класс должен быть «окончательным». –
getInstance должен быть статичным, и ваш конструктор должен быть закрытым, если вы хотите применить синглтон. [edit] dangit @JonSkeet, вы украли мой ответ, и вы были быстрее меня :-p –