我正在开发一个每秒可以获得数千个请求的系统,基本上我们要避免的任务之一就是创建不必要的/额外的对象。
我们需要验证6个请求项本身的传入请求。
我想为每个项目验证创建一个类。
但是,我试图证明我是否应该使用静态验证类vs对象以及包含HttpRequest
的实例作为实例字段。
我应该使用静态类还是对象?你会做什么?
基本上,我正在做的是将List<IValidator> validators
注入请求处理程序并迭代它。但不确定我是否应该有一个实例与静态类。
答案 0 :(得分:4)
您是否真的测量过创建新Validator实例对内存的影响与重新使用静态方法的影响?使用短寿命对象的成本非常非常小。您应该测量两种方法之间的差异,如果没有可测量的差异,请使用代码更清晰,更易于理解的方法。
在这种情况下,衡量差异总是有意义的,而不是假设一个与另一个相比更好。
答案 1 :(得分:1)
在多线程环境中,使用静态类/方法总会打开并发陷阱。由于短生命对象的创建和收集很便宜,因此创建短期对象通常比运行cuncurrency问题和额外同步更好,这是很昂贵的。
Struts由于类似的原因从静态请求处理程序切换到基于实例的请求处理程序。