One example is if the constructor of the singleton allocates memory from the heap and you wish that allocation to be predictable, for instance in an embedded system or other tightly controlled environment. I prefer, when the Singleton pattern is the best pattern to use, to create the instance as a static member of the class.
A singleton is a class which only allows one instance of itself to be created - and gives simple, easy access to said instance. The singleton premise is a pattern across software development. There is a C# implementation "Implementing the Singleton Pattern in C#" covering most of what you need to know - including some good advice regarding thread safety. To be honest, It's very rare that you ...
You want to customize what it means to call the class, which is decided by its type. In general, it makes sense to use a metaclass to implement a singleton. A singleton is special because its instance is created only once, and a metaclass is the way you customize the creation of a class, allowing it to behave differently than a normal class.
The glorified global variable - becomes a gloried global class. Some say breaking object-oriented design. Give me scenarios, other than the good old logger where it makes sense to use the singleton.
This is useful when your singleton needs to inherit from a superclass. You cannot use the enum singleton pattern in this case, since enums cannot have a superclass (they can implement interfaces, though).
What is an efficient way to implement a singleton pattern in Java?