Одиночка — компонент, экземпляр которого создается только один раз. Применяется в случаях:
- в системе присутствует только один компонент
- вызов конструктора трудоемко и делается только один раз
- запрет на создание копии объекта
Вообще шаблон одиночка признан антипаттерном, необходимо избегать его чрезмерного использования. Он необязательно плох и может иметь полезные применения, но использовать его надо с осторожностью, потому что он вводит глобальное состояние в ваше приложение и его изменение в одном месте может повлиять на другие части приложения, что вызовет трудности при отладке. Другой минус — это то, что он делает ваш код связанным.