10

我正在开发一个每秒收到数千个请求的系统,本质上我们试图避免的任务之一是创建不必要的/额外的对象

我们需要验证 6 个请求项本身的传入请求。

我正在考虑为每个项目验证创建一个类。

但是,我试图证明我是否应该使用静态验证类与包含HttpRequest作为实例字段的实例的对象。

我应该使用静态类还是对象?你会怎么做?

本质上,我正在做的是注入List<IValidator> validators请求处理程序并对其进行迭代。但不确定我是否应该有一个实例与静态类。

4

2 回答 2

7

您是否实际测量过创建新的 Validator 实例与重用静态方法对内存的影响?使用短命对象的成本非常非常小。您应该衡量这两种方法之间的差异,如果没有可衡量的差异,请使用代码更清晰、更易于理解的那一种。

在这种情况下,衡量差异总是有意义的,而不是仅仅假设一个与另一个更好。

于 2012-08-28T18:28:00.867 回答
1

在多线程环境中,使用静态类/方法总是会带来并发陷阱。由于短期对象的创建和收集很便宜,因此创建短期对象通常比遇到并发问题和额外的同步要好,后者很昂贵。

出于类似的原因, Struts从静态请求处理程序切换到基于实例的请求处理程序。

于 2012-08-28T18:45:41.443 回答