物事を単純化するために、私はインターフェースRandomProvider
インターフェースを持っているとしましょう
public interface RandomProvider
{
double nextRandom();
}
そして、このインターフェイスの 3 つの異なる実装、ARandom、BRandom、CRandom があるとします。実装に関するいくつかの統計を収集したいと思います。
- 何回
nextRandom()
呼ばれるか - 生成された乱数の合計 (ばかげているように聞こえるかもしれませんが、これは単なる例です)。
最終的に、これらの統計は DB に記録されます。これらは複数のスレッドから頻繁に使用されるクラスであるため、リクエストが来るたびに値を書き込むことは現実的ではありません。
私の頭に浮かぶ最初のアイデアは、これらのデータを保持するシングルトンを作成し、実装がシングルトンを呼び出し、必要な統計を増やすというものです。別のクラスがシングルトンから読み取り、結果を DB に書き込み、統計を減らします。しかし、グローバルに変更可能なデータとシングルトンがいかに悪であるかについての記事をたくさん読んだので、このように進むのが怖いです。
他のアイデアはありますか?