譯者:kefate
原文:https://github.com/google/gui...
大家好,我是kefate。今天開始我將會把Google Guice的官方文檔陸續翻譯一遍,水平有限,若有翻譯不妥之處,還望各位不吝指出。OK,話不多説,下面開始今天的正文~
Guice 是一個基於Java的輕量級的 依賴注入(dependency injection) 框架。
使用依賴注入有很多好處,但手動操作往往會導致編寫大量的模板代碼。為了解決這個問題,Guice 框架應運而生。它可以讓你使用依賴注入的同時,避免編寫大量的模板代碼,這一點在下一節中有進一步的説明。
簡單來説,Guice 減輕了對象工廠的需求,同時減少了代碼中對 new 的使用。我們可以把 Guice 的 @Inject 想象成新的 new。在某些情況下,你仍然需要編寫工廠模式的代碼,但你的代碼不會直接依賴於它們。代碼將更容易修改、單元測試以及在其他情況下複用。
Guice 擁護Java的類型安全特性,尤其是在涉及到Java 5中引入的特性時,如泛型和註解。你可以把 Guice 看作是對核心Java缺失功能的填補。理想情況下,語言本身會提供大部分相同的功能特性,但在這種語言出現之前,我們可以用 Guice。
Guice 可以幫助你設計更好的 API,並且 Guice API 本身也樹立了一個好的榜樣。 Guice 的設計理念是是寧缺毋濫(Guice is not a kitchen sink),我們用至少三個用例來證明每個功能的合理性。如果對於一個一功能沒有把握,我們就不去管它。我們也提供了通用的能力讓你能夠擴展 Guice,而不是在 Guice 的核心框架中添加功能。
Guice 的目標是使開發和調試更容易、更快速,而不是更難、更慢。本着這一宗旨,Guice 避免使用一些難以理解的“黑科技”(Guice steers clear of surprises and magic)。不管有沒有工具,你都應該能夠理解代碼,儘管工具可以使事情變得更加簡單。當錯誤發生的時候,Guice 會多做一些工作來生成有用的信息。