我準備喝koolaid :)一個人如何使用谷歌Guice的@Inject使用Scala /(播放的2.4.x)
遊戲正在向谷歌吉斯(https://github.com/google/guice),所以我想我已經得到了這裏沒有真正的選擇,只是爲了搭便車。
不知何故我失去了一些東西。
我得到了「不要打電話給我們,我們會打電話給你」的心態和依賴注入解決方案的核心原因 - 更脆弱和更可測試的代碼。
但是有時候我想要的只是一個簡單的牙籤,不覺得有必要烤蛋糕,或者更糟糕的是寫完整的食譜烘烤一個,只是爲了獲得一個...
斯卡拉,這種語言似乎讓牙籤工廠變得微不足道(Guice的一個論點是建立工廠的成本(用Java) - 所以對我來說,這個論點至少是不起眼的,但這並不否定其他DI問題I知道)。
在斯卡拉,你有一個伴侶object
(抱歉有一個寧靜的閃回 - 我需要一個時刻 - 好吧去吧 - 哦,並指責Odersky這個詞的組合不是我請...)。
對於牙籤類:
case class Toothpick(color: Color)
object Toothpick {
def redPlease = {
Toothpick(Color.RED)
}
}
當然,你可以得到花哨的apply
等階細微的主機得到確切的牙籤你通過參照Toothpick
「對象」希望只是:
val myShinyRedToothpick = Toothpick.redPlease
所以在這種情況下,Toothpick
object
是一個即時工廠。
讓事情變得簡單並不會讓事情變得正確 - 它讓事情變得簡單。
谷歌的Guice概述似乎是:一個工廠來統治他們全部。
好的 - 我可以忍受這一點。他們得到了第一個 - 他們擁有了所有的土地 - 我們將永遠成爲佃農。遊戲結束。
我需要的是牙籤的例子,如何USE Guice'd up工廠。如何從正常 Scala代碼請從我的牙籤? (就像我說過的,我完全可以忽略這個觀點......所以如果真是這樣的話,那麼隨意拋出任何猴子廢物來讓我看向正確的方向)。
PS:我不需要上課爲什麼 - 我只想要一個在如何。
Odersky使用「伴侶模塊」。他們厭倦瞭解釋你用關鍵字對象定義了一個模塊。 –
@ som-snytt啊有趣的歷史珍聞。感謝 - 如何一個簡單的單詞可以如此誤解::) – Techmag
遇到這個 - 它可能會幫助... http://www.ibm.com/developerworks/library/j-guice/ – Techmag