The Singleton's constructor should always be private to prevent direct
construction calls with the new
operator.
The static method that controls the access to the singleton instance.
This implementation let you subclass the Singleton class while keeping just one instance of each subclass around.
The Singleton class defines the
getInstance
method that lets clients access the unique singleton instance.