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 però il codice che utilizza questi singleton diventa abbastanza esteso, necessariamente si riduce la fattibilità di refactoring futuri, dovendo modificare ogni singolo punto in cui si accede ai singleton.
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.