- Singletons can implement interfaces and inherit from other classes.
- Singletons can be lazy loaded. Only when it is actually needed. That’s very handy if the initialisation includes expensive resource loading or database connections.
- Singletons offer an actual object.
- Singletons can be extended into a factory. The object management behind the scenes is abstract so it’s better maintainable and results in better code.