2013-11-24 46 views
0

我目前正在使用RoboGuice開發一些應用程序。我的問題是:我應該真的注射everthing?我創建的每個班級是否都有自己的合同界面?我應該使用DI與RoboGuice注入所有東西嗎?

這個問題來到我的頭後,我的名字界面爲我的類之一「BatteryStatusUtil」,它返回有關電池電量的信息,以及類似的東西的麻煩。我讀過的地方是「如果你不能爲你的界面想名字,你可能不需要界面」

請糾正我,如果我使用依賴注入過多,或給我一些提示,我對馬接口沒有「更通用的」名稱(如類FastCar與接口Car

回答

0

應該我真的注入寄託都?

不,絕對不是。從依賴注入的角度來看,有兩種類型:newables and injectables

如果你想不出名的界面,你可能並不需要接口

這聽起來有點像Reused Abstraction Principle,雖然我不知道在您的報價的來源。但我想將其重新改寫爲:

如果您不能爲您的界面考慮名稱,那麼您可能不得不重新考慮抽象。

例如,如果想出一個名字很難,你可能會違反SOLID原則。

儘管DI本身並不強制您使用接口,但它是保持代碼可測試的有效方法。您的BatteryStatusUtil可能是一個很好的例子,因爲這個類可能會直接掛鉤到您的OS API中,並且能夠測試BatteryStatusUtil的任何使用者,您將不得不嘲笑該實用程序類,因爲您不希望進行單元測試依賴於您的操作系統,否則將很難以自動化的方式模擬電池狀態。

+0

請您解答! – user1321706

相關問題