2017-10-17 58 views
3

寻找依赖注入(DI)的需求,我很清楚并不是所有的语言都在使用DI框架。Kotlin是否需要DI框架?

例如,有关Ruby的这篇特定文章(Ruby Talk about DI Frameworks)讨论了DI以及Ruby如何因为语言的灵活性和意图而不需要DI框架。

它规定为例子,而不是注入的东西,我们可以只添加默认的参数,例如:

class FooBar(val foo: FooInterface = Foo()) 

这样,如果我们需要的FooInterface另一个实例中,我们只想实例化FooBar类别的东西。

我认为Kotlin提供了同样的灵活性,所以我的问题是,当我们在项目中完全不使用Java时,是否真的需要DI框架?

+0

你是什么意思“用别的东西去体现...”?你的意思是手动吗? – ThisIsNoZaku

+0

我知道还有其他的方法,像mockito,但是例如,如果你需要模拟Foo()类,你可以简单地做一些像'FooBar(MockFoo())' – rlino

+4

语言选择和依赖注入是完全正交的概念。我不同意这篇文章的大部分内容,但即使他同意这主要是应用程序的大小问题,并且随着JavaConfig和Boot Spring已大幅度向基于代码的配置方向发展(必要时)。是否使用任何类型的框架最终都是需要跟踪的事情的数量。 (请注意,您的示例几乎完全忽略了DI的要点,这是'Foo'通常会发生变化的原因。) – chrylis

回答

3

针对或禁止使用DI框架的决定是,与您使用的语言无关。 Kotlin就其结构而言(例如类别作为主单元)非常类似于Java,即具有相同的限制。有些用例可能需要一个DI框架,与Java相同。可能的候选人可能是批准良好的工具,如弹簧Guice。也有Kotlin支持的DI工具,例如Kodein,这可能很有趣。

+0

或牙签,我认为这是最适合Android的DI框架。 – Christine

相关问题