Reason to use:
- When you want there to be at most a single
  instance of a class. 
- To offer a central point of access to the single instance.
- To centralize the control of the creation of the single
  instance.

  https://www.oodesign.com/singleton-pattern.html
  https://sourcemaking.com/design_patterns/singleton