JavaRush /Java блог /Архив info.javarush /Зачем нужен Singleton?
KarmaHacker
30 уровень
Новосибирск

Зачем нужен Singleton?

Статья из группы Архив info.javarush
Решаю сейчас большую задачу 27 уровня. Там нас просят создать класс StatisticManager и сделать его синглтоном. Ок без проблем! В дальнейшем, в других классах программы мне приходится вызывать методы StatistcManager'а, и тут я начинаю сталкиваться с небольшими раздражающими моментами, приходится писать ссылочную переменную StatisticManager statisticManager = StatisticManager.getInstance(); statisticManager.method(); или так: StatisticManager.getInstance().method(); Это же столько лишних букв! Намного проще было бы сделать класс статическим и писать так: StatisticManager.method(); Думаю, наверно синглтон в чем то выигрывает перед статическим классом? Читаю статью на Хабре и только усиливаю свои сомнения. Синглтон как минимум в данной задаче - избыточен. Пока для себя вижу только одно применение синглтона - если нам нужно сэкономить ресурсы и создать объект не сразу, а когда - нибудь потом, когда он нам понадобиться. В остальных случаях статический класс - самое оно. На хабре еще что-то пишут про наследование, но слабо пока могу себе представить такую ситуацию, наверно тоже не очень часто. Если я не прав, поправьте меня, пожалуйста. Просто хочу лучше понять принципы проектирования и возможно это поможет разобраться кому то еще :)
Комментарии (1)
ЧТОБЫ ПОСМОТРЕТЬ ВСЕ КОММЕНТАРИИ ИЛИ ОСТАВИТЬ КОММЕНТАРИЙ,
ПЕРЕЙДИТЕ В ПОЛНУЮ ВЕРСИЮ
alex8894 Уровень 34
6 февраля 2017
Да, кажется во всем моем нынешнем проекте нет ни одного синглтона, созданного «классическим» способом. Зато куча синглтонов, созданных Spring с помощью внедрения зависимостей.
Вообще, у меня все сильнее укрепляется подозрение, что многие из паттернов уже устарели и в эпоху Java 8 с лямбдами стали малоактуальны.