The singleton design pattern is a creational design pattern that only allows one instance of its kind to exist and provides a single point of access to it.
* Singletons let you access your object from anywhere in the application.
* Guarantees that only one instance of this class will be available at any point in time.
* An example of this pattern in use is an instance database. You only need one instance to access the database.
### When should the Singleton Pattern be used?
* It should be used when a class must have a single instance variable.
* It disables all means of creating objects of a class except for the special static creation method.
* Returns the existing instance if it has already been created.
* Its code needs to be adapted to handle multiple threads.