There are some who are critical of the singleton pattern and consider it to be an
 design pattern is one of the twenty-three well-known
The Singleton design pattern solves problems like: 
The Singleton design pattern describes how to solve such problems:
getInstance()) that returns the sole instance of the class.
The key idea in this pattern is to make the class itself responsible for controlling its instantiation (that it is instantiated only once).
The hidden constructor (declared private) ensures that the class can never be instantiated from outside the class.
The public static operation can be accessed easily by using the class name and operation name (