Ensure a class has only one instance, and provide a global point of access to it.
Application needs one, and only one, instance of an object. Additionally, lazy initialization and global access are necessary.
Singleton pattern is a design pattern that restricts the instantiation of a class to one object. This is useful when exactly one object is needed to coordinate actions across the system. The concept is sometimes generalized to systems that operate more efficiently when only one object exists, or that restrict the instantiation to a certain number of objects.