Pour garder les choses simplifiées permet de dire que j'ai une interface RandomProvider
InterfaceQuel est le moyen/modèle approprié pour collecter des informations à partir des classes?
public interface RandomProvider
{
double nextRandom();
}
Et dire que j'ai 3 différentes implémentations de cette interface, ARandom, Brandom, CRandom. Je veux recueillir des statistiques sur les mises en œuvre:
- combien de fois
nextRandom()
est appelé - somme des nombres aléatoires générés (il peut paraître stupide, mais cela est juste un exemple).
À la fin, ces statistiques seront enregistrées dans DB. Ce sont des classes fortement utilisées à partir de plusieurs threads, il n'est donc pas possible d'écrire les valeurs chaque fois qu'une requête arrive.
La première idée qui me vient à l'esprit est, je fais un singleton qui contient ces données, les implémentations appellent le singleton et augmentent les statistiques nécessaires. Une autre classe lit le singleton et écrit les résultats dans DB et décrémente les statistiques. Mais j'ai lu tant d'articles sur la façon dont les données et les singletons sont mutables à l'échelle mondiale, alors j'ai peur d'aller dans cette direction.
D'autres idées?