Паттерн Singleton гарантирует, что класс имеет только один экземпляр и предоставляет глобальную точку доступа к нему. Он используется, когда ровно один объект должен координировать что-то (конфигурацию, пул соединений, логгер), хотя это также вызывает некоторые споры.
Что делает Singleton
SINGLETON → guarantee a class has only ONE instance, with global access to it:
→ the class controls its own instantiation (private constructor)
→ returns the SAME instance every time it's requested
→ for: things there should only be ONE of, accessed from many places
