我已经建立了一个可插入系统,可以从系统环境中检索没有等效设置器的数值。
例如:
此接口指定检索器的合同
public interface ValueRetriever
{
double retrieveValue();
}
这里有两个实现:
public class TotalMemoryRetriever implements ValueRetriever
{
@Override
public double retrieveValue()
{
return Runtime.getRuntime().totalMemory();
}
}
public class FreeMemoryRetriever implements ValueRetriever
{
@Override
public double retrieveValue()
{
return Runtime.getRuntime().freeMemory();
}
}
其他可能性是返回系统负载,可用磁盘空间等
我已经建立了另一个层,该层为获取的值计算不同时间范围内的移动平均值,这就是为什么有一个用于获取接口的有用的原因。这使我可以通过“插入”每个特定的检索器将移动平均机制与许多“检索器”实现一起使用。
我为此选择了“猎犬”一词,但我认为可能会有一个更好的词或更好的方法来做到这一点。我可以在这里使用最佳做法还是其他约定?
您可以命名类TotalMemorySensor
和FreeMemorySensor
,并使它们都实现MemorySensor
接口。
我不确定是否应将同一接口用于内存,CPU,磁盘和其他统计信息。检索double
甚至意味着什么?是KB,MB,GB吗? DiskSensor
具有long totalSpaceInBytes()
,而CpuSensor
应该具有double[] loadAverage()
更有意义。