Ho sentito parlare di "Singletons sono sempre cattivi" in giro per il posto. Non li odio fino a quel punto, ma cerco di non usarli se ho un'alternativa migliore.
In questo caso ho un sistema che gestisce molte richieste, ognuna delle quali entra in una sua discussione. Ogni richiesta che arriva deve essere assegnata al proprio ID sequenziale unico.
Attualmente ho una classe Singleton il cui ruolo è avviare questo Id all'avvio e mantenerlo mentre il sistema è in esecuzione. Il Singleton viene creato / recuperato e il valore Id viene incrementato in modo thread-safe, come ci si aspetterebbe. In realtà viene distribuito ai thread sulla creazione da Dependency Injection, ma il nucleo della classe è un Singleton classico costruito intorno a una rappresentazione statica del valore di Id corrente.
Dato che è probabile che facciamo più lavoro che richiede un approccio multi-thread, sarei interessato a sapere se c'è un modo per implementare questo tipo di funzionalità in un modo che permetta di mantenere i dati in modo sincrono attraverso fili altrimenti inconsapevoli l'uno dell'altro, senza usare il modello Singleton tanto temuto?