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.