我已閱讀關於Google Guice的內容,並瞭解與其他依賴注入方法有關的一般問題,但是我還沒有看到有人在實踐中使用Guice的例子,其價值變得清晰。任何人都可以提供一個清楚的解釋,爲什麼谷歌Guice是有用的?
我想知道是否有人知道任何這樣的例子?
我已閱讀關於Google Guice的內容,並瞭解與其他依賴注入方法有關的一般問題,但是我還沒有看到有人在實踐中使用Guice的例子,其價值變得清晰。任何人都可以提供一個清楚的解釋,爲什麼谷歌Guice是有用的?
我想知道是否有人知道任何這樣的例子?
使用Google Guice在單元測試中提供簡便性只有高級優勢。有些人甚至可能不在他們的項目中使用單元測試。人們一直在使用Spring/Dependency Injection,而不僅僅是單元測試。
使用谷歌吉斯水平低的優勢是凝聚力的應用程序中的事情,你的項目中的類可以被鬆耦合彼此之間。我可以爲另一個班級提供班級,而不需要彼此依賴。
考慮這個例子:
public class A{
}
public class B{
A a = new A();
}
類B將被緊密地耦合到A類,或換句話說,它是依賴於類A的存在。
但隨着吉斯我可以代替使其鬆散地連接這樣的:
public class B{
private A a;
@Inject
public B(A a){
this.a = a;
}
}
類B現在是鬆散地耦合到A,和吉斯負責提供的,而不是乙具有初始化它實例。有了這個,你可以擴展它來提供A到B的接口,如果你想單元測試你的應用程序,實現可以是一個Mock對象。
說了這麼多我們只是討論至今依賴注入的好處。除了依賴注入,使用谷歌Guice的好處是:
這是它的概述。但是隨着你對Guice更深入的瞭解,關於它的事情還有很多。 A 簡單現實生活中的例子是,如果您使用的是GWT with MVP implementation,那麼GWT應用程序中的組件/小部件會非常鬆散地耦合在一起,並且不會彼此緊密集成。
我覺得優勢自帶編碼到接口,測試和代理。
編碼到一個接口有助於保持你的代碼分層得當,能夠注入嘲笑進行測試,並允許您生成代理自動地使客戶端代碼不用擔心實現。
這適用於吉斯,春,PicoContainer的,和所有的DI框架。
夠了嗎?
也許你應該回到過去,仔細觀察Guice想要解決的問題。爲了理解Guice背後的動機,TheServerSide.COM上的新聞(及其評論)是完美的起點。然後,繼續公告Google Guice, A Java Dependency Injection Framework(和評論)和Tech Talk: Bob Lee on Google Guice(和評論)。個人而言,我分享了關於邪惡XML的疑慮:XML配置地獄,XML和可能的運行時錯誤,容易出錯和重構的不利字符串標識符等等。實際上,我認爲對Spring和併發的懷疑論意見是對每個人都好(包括春天)。我很高興看到DI框架領域的新成員,特別是利用Java 5功能(爲了類型安全而使用泛型和註釋)的現代框架。因爲Google在關鍵任務應用程序中運行Guice(幾乎每個基於Java的應用程序也是基於Guice的應用程序:AdWords,谷歌文檔,Gmail甚至YouTube,如「Crazy」Bob Lee在Guice²),我不敢相信Guice是完全錯誤的,並沒有提供任何價值。可悲的是,我不認爲Google會提供這些應用程序的很多代碼作爲示例......但是您可能會在list of applications that use Guice和/或list of 3rd party Guice addons中找到有趣的東西。或者查看Guice²中提到的書籍。或者詢問Bob :)
「重構 - 不利字符串標識符」究竟意味着什麼?你可以擴大一點嗎? – Geek 2014-07-31 18:17:09