È una buona idea avere un'implementazione Singleton con iniezione di dipendenza? Ho alcune classi che eseguono alcune attività pesanti sull'istanziazione (relative al caricamento del database). Mi piacerebbe usarli sempre come nuove istanze ma è problematico a causa delle prestazioni. Il codice con cui sto lavorando proviene da un'app legacy, quindi è preferibile non toccarlo troppo.
La mia domanda è: Posso creare singleton come questo esempio?
IMPORTANTE : considerare la dipendenza è una specie di logger, quindi non ho più implementazioni di esso, solo una. Non è un problema se tutte le istanze condividono la stessa istanza di dipendenza.
Sono interessato all'utilizzo di interfacce poiché rendono la mia soluzione meno accoppiata tra i progetti.
public class HeavyTaskDb()
{
private static HeavyTaskDb instance;
private IDependency dependency;
private HeavyTaskDb(IDependency dependency)
{
this.dependency=dependency;
}
public static HeavyTaskDb Instance(IDependency dependency)
{
if(instance==null)
{
instance=new HeavyTaskDb (dependency);}
}
return instance;
}
}