Monday, February 16, 2015

Singleton

Всем привет! Сегодня поговорим о самом известном шаблоне проектирования "Одиночка" (Singleton). О нем уже очень много сказано, но тем не менее - это самый популярный вопрос на собеседованиях.




Singleton - паттерн гарантирует, что класс имеет только один экземпляр, и предоставляет глобальную точку доступа к этому экземпляру.

Самый общий Singleton, которого хватает почти на 90% задач


Какие у него плюсы и минусы:
  • + ленивая инициализация
  • - низкая производительность

Есть более продуктивный шаблон (Double Checked Locking & volatile)


Какие у этого шаблона плюсы и минусы:
  • + Ленивая инициализация
  • + Высокая производительность
  • - Поддерживается JDK5+
Есть еще и очень простой Singleton (Enum Singleton)


Какие у этого шаблона плюсы и минусы:
  • + Сериализация из коробки
  • + Потокобезопасность из коробки
  • + Возможность использования EnumSet, EnumMap и т.д.
  • + Поддержка switch
  • - Неленивая инициализация

No comments: