为了简化事情,假设我有一个界面RandomProvider
界面
public interface RandomProvider
{
double nextRandom();
}
假设我有这个接口的 3 个不同的实现,ARandom、BRandom、CRandom。我想收集一些关于实现的统计信息:
- 多少次
nextRandom()
被调用 - 生成的随机数的总和(听起来可能很傻,但这只是一个例子)。
最后这些统计数据将被记录到数据库中。这些是来自多个线程的大量使用的类,因此每次请求到来时都写入值是不可行的。
我想到的第一个想法是,我制作一个保存这些数据的单例,实现调用单例并增加必要的统计信息。另一个类从单例读取并将结果写入数据库并减少统计信息。但是我读过很多关于全局可变数据和单例是多么邪恶的文章,所以我害怕走这条路。
还有其他想法吗?