The singleton design pattern ensures that a class has only one object instance in the entire application. It introduces a global state in the applications it is used in.
A singleton object can be initialized using different strategies—lazy initialization or eager initialization. This all depends on the intended use, the time it takes an object to be initialized, and so on.