Нюансы Java разработки

Этот блог о Java разработке и в деталях описывает наиболее важные темы.

Посты с тегом «singleton»


Все что вы хотели знать о Singleton

Шаблон проектирования Singleton (Одиночка) один из самых некорректно применяемых паттернов. В этой статье мы рассмотрим несколько реализаций синглтона, которые работают корректно в многопоточной среде, при выполнении задач сериализции и клонирования и даже при рефлексивных атаках.

Оглавление Для чего используется singleton Отличия от статических классов Lazy или eager загрузка singleton? Eager loading singleton Грубая синхронизация Double-checked locking синглтон Initialization-on-demand holder идиома Основанный на enum singleton Проблемы с сериализацией и десериализацией Проблемы с клонированием Проблемы с рефлексией Итак, почему синглтон может считаться анти-паттерном? Заключение Для чего используется singleton Паттерн singleton используется в случаях когда существовать может ровно один экземпляр класса и он должен быть доступен через хорошо известную точку доступа или когда единственный экземпляр должен быть расширяем подклассами и клиенты должны иметь возможность использовать наследуемый экземпляр без модификации своего кода. Отличия от статических классов В JDK есть примеры использования и синглтонов и статических классов, с одной стороны java.lang.Math – final класс со статическими методами, с другой стороны java.lang.Runtime – синглтон. Преимущества singleton Если вам требуется поддерживать состояние, то синглтон больше подходит, нежели статический класс, поскольку поддержка состояния в статических классах может привести к ошибкам, особенно в кон Читать далее

17 ноября 2019