当我到处使用Spring时,是否值得拥有一个静态的Builder类

时间:2014-03-20 20:28:06

标签: java spring

我使用FooBuilder类来构建类Foo的对象。 FooBuilder.create接受一些初始论据,例如idname。构建器不包含任何状态。

通常我会这样做

class FooBuilder {
  public static Foo create(...)

但是由于我所使用的代码库在任何地方使用Spring,是否仍然值得使用static方法或更好的方法使其不是静态的并使用Spring FooBuilder单例?

除了与其余代码的一致性之外,是否存在任何争论?可扩展性(Spring为+1,可以为构建器添加一些自定义)?测试(+1 Spring,难以模拟静态)? KISS(static很简单)?

修改

  • Foo需要在编译时构建(nameid可以更改),构建器保持不变

1 个答案:

答案 0 :(得分:1)

由于您已经在使用Spring,因此最好将其定义为Spring单例。这样可以通过注入模拟构建器而不是真实构建器来更轻松地测试其他依赖服务。

您可能希望将构建器子类化,并在将来覆盖某些方法,并使用不可行的静态方法。

此外,您可能希望将某些AOP应用于bean,例如将来的日志记录,安全性或性能跟踪,并且使用静态会使其变得更难。

一般来说,使用Spring单例更灵活,最好只尝试将静态方法的使用减少到非常通用的实用方法。

另请查看有关Tips for avoiding Static Method Overuse的帖子。