Programmazione:Java/Singleton with interface
Generalmente i singleton vengono gestisti con la classica proprietà statica in combinazione con la funzione statica getInstance:
public class Singleton {
  protected static Singleton self;
  
  protected Singleton() {
  }
  public static Singleton getInstance() {
     if(self == null) {
        self = new Singleton();
     }
     return self;
  }
  public void addProp(String prop, Object value) {
  }
}
Singleton.getInstance().addProp("PROP", null); // modalità d'accesso al singleton
questo codice però fa si che ogni volta che è necessario utilizzare questo oggetto vi si acceda tramite una funzione. Oltre a questo, quando il codice che accede al singleton diventa abbastanza esteso, necessariamente riduce la fattibilità di refactoring, dovendo modificare ogni singolo punto in cui si accede all'oggetto.
Per ovviare a questi due problemi è possibile utilizzare un'interfaccia come entry point del singleton:
| 
 
 
  | 
 
 
  | 
ISingleton.instance.addProp("PROP", null); // modalità d'accesso al singleton
Facendo in questo modo ci si slega completamente dall'implementazione del singleton ed è possibile in ogni momento sostituirla con un'altra implementazione. Per di più l'accesso è più veloce, dato che si accede tramite una proprietà e non un metodo.