Core
35 уровень

Singleton.

Статья из группы Архив info.javarush
участников
Добрый день. Почитал (здесь: Шаблон проектирования Singleton) про шаблон Singleton и про его различные варианты реализации. Всё понятно, но есть маленький вопрос: public class EagerInitializedSingleton { private static final EagerInitializedSingleton instance = new EagerInitializedSingleton(); // конструктор private, чтобы не было возможности создать экземпляр класса извне. private EagerInitializedSingleton(){} public static EagerInitializedSingleton getInstance(){ return instance; } } В качестве недостатка этого варианта указывается потеря ленивой инициализации (Объект instance будет создан classloader-ом во время инициализации класса). И вроде всё ясно и понятно, но...Все классы загружаются в JVM динамически, при первом использовании класса. И я никак не могу в силу неопытности придумать пример, когда вызов метода getInstance() будет являться не первым использованием класса, который представлен выше в коде. Приведите, пожалуйста, практичекий пример, если не сложно.
Комментарии (2)
  • популярные
  • новые
  • старые
Для того, чтобы оставить комментарий Вы должны авторизоваться
Fatal
Уровень 14
12 октября 2016, 22:30
У вас в синглтоне всегда одно поле будет? Имеется ввиду что класс инициализируется во время обращение к любому из его полей — например константы. Вот еще можно почитать
Core
Уровень 35
13 октября 2016, 10:03
Ну я понимаю, как инициализация работает в принципе, я пример не мог сочинить. Да, в принципе если этому классу дописать static поля какие-нибудь, то наверное может возникнуть ситуация, когда к этому полю произойдёт обращение раньше, чем вызов метода getInstance(). За статью спасибо, добавлю себе в материал.