2017-10-17 59 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

相關問題