Singleton es un patron de diseño que se utiliza cuando de una clase sólo necesitas una instancia... por ejemplo, para conectar a una base de datos, sólo necesitas conectar una vez, pero si en algún lugar no tenés acceso a la conexión la idea es llamar a algún método para poder conseguirlo y utilizar la misma instancia que antes...
Cómo ejemplo, está explicado
acá