构建器模式与依赖注入(例如通过Guice)

时间:2012-09-20 20:46:07

标签: java dependency-injection guice

我正在开发一个简单的树形结构数据库,我通常通过Builder(Builder模式)设置依赖项或可选设置。现在我不确定何时使用Guice,何时使用Builder模式以及何时使用静态工厂方法而不是构造函数本身。我已经多次阅读过Effective Java,我认为它至少提到了不暴露构造函数的许多优点。是时候重读了; - )

那么,您是否知道明显可区分的案例?我不应该暴露构造函数?因此,例如在每种情况下写public static Foo getInstance(...) { return new Foo(...)}

2 个答案:

答案 0 :(得分:12)

  

构建器模式与依赖注入

这两个甚至关闭在你的脑海中如何相似? 当您需要处理构造函数具有大量参数(可能是可选的)的类时,将使用构建器模式,并且此模式使您的代码更易于读写。

依赖注入是一种有助于松散耦合的方法,可以将更高级别类的依赖关系移除到更低级别的类。例如。需要连接到数据库的类不会直接创建连接,但会“注入”连接,并且可以将此连接交换到其他数据库,而不会影响使用它的代码。

答案 1 :(得分:1)

我已经开始在我的大部分项目中使用构建器,事实证明我可以用构建器和单例替换所有的DI。

即:

AppContext appContext = new AppContext.Builder()
.setProperties(testProps)
.setDB(testDB)
.build();

// run tests

如果没有DI,我的代码变得更加简单。