再借斧子的例子說一說spring與guice的區別

梧桐雨—168發表於2008-03-19

  看下邊對於不同社會形態下一個人(java物件,呼叫者)需要一把斧子(java物件,被呼叫者)的例子:

  (1),原始社會時,勞動社會基本沒有分工,需要斧子的人(呼叫者)只好自己去磨一把斧子,每個人擁有自己的斧子,如果把大家的石斧改為鐵斧,需要每個人都要學會磨鐵斧的本領,工作效率極低。

  對應Java裡的情形是:java程式裡的呼叫者new一個被呼叫者的例項。類耦合度極高,修改維護煩瑣,效率極低。

  (2),工業社會時,工廠出現,斧子不再由普通人完成,而由工廠生產,當人們需要斧子的時候,可以到工廠購買斧子,無需關心斧子是怎麼製造出來的,如果廢棄鐵斧為鋼斧,只需改變工廠的製造工藝即可,製作工藝是工廠決定的,工廠生產什麼斧子,工人們就得用什麼斧子。

  對應的Java裡的情形是:Java程式的呼叫者可以以來簡單工廠建立被呼叫者,變化點被隔離到了簡單工廠裡,雖然耦合度降低,但是呼叫者會和工廠耦合,而且需要定位自己的工廠。

  (3)近代工業社會,工廠蓬勃發展,人們需要什麼斧子,只需要提供一個斧子圖形,商家會按照你提供的圖形將你的斧子訂做好,送上門。

  對應Java裡的情形:spring的依賴注入

  (4)進入按需要分配社會,資訊進入現代化,人們不再去工廠購買斧子,不再拘泥於需要什麼斧子事先畫好什麼樣的圖形,只需要打個電話,描述一下需要什麼型別的斧子,或許想打造一個物美價廉的斧子,商家會根據市場零件的價格,計算出最優製作工藝,打造最適合的斧子送過來,更加資訊化,更加人性化。

  對應Java裡的情形:基於描述的注入,動態的,靈活簡單的注入,如:Guice。

  對於該不該使用Guice,我想也是仁者見仁,智者見智,就象好多論壇裡動不動有人會在那裡討論到底學Java還是學.net或者是使用eclipse還是Jbuilder的這類無聊話題,適合和滿足專案需求的,又能省工省力簡單的完成工作的,就是最好的。

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/13270562/viewspace-211680/,如需轉載,請註明出處,否則將追究法律責任。

相關文章