Questa è una citazione dal libro Go4, ed è il secondo di due punti sotto la sezione Applicabilità ("Usa lo schema Singleton quando ...")
Questo punto non è proprio specifico di Singleton; significa semplicemente che il codice del client è scritto contro l'interfaccia della classe base, ed è quindi disaccoppiato dall'implementazione concreta di Singleton (non ne è a conoscenza). Questa è solo inversione di dipendenza presente in molti altri modelli. Immagino che lo includessero come, se non hai bisogno di sottoclassi, puoi semplicemente usare una classe statica (come in C #), o un mucchio di metodi gratuiti + qualche stato globale, o qualcosa del genere.
In questo approccio, uno dei problemi è come configurare il metodo GetInstance () (o equivalente) per restituire l'implementazione concreta corretta.
Detto questo, si noti che Singleton è considerato da molti un antipattern, la ragione principale è che un Singleton, come normalmente implementato, è essenzialmente una variabile globale, quindi tutto il codice che lo utilizza può diventare implicitamente accoppiato.