The Singleton pattern ensures a class has only one instance and provides a global point of access to it. It's used when exactly one object should coordinate something (a configuration, a connection pool, a logger), though it's also somewhat controversial.
What Singleton does
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
