2013-08-07 91 views
1

Ruby modules讓事情變得更容易,同時允許分離關注點,將database connection or other dependencies傳遞給各種對象。 Groovy是否支持類似的功能?如果是的話,它叫什麼?Groovy是否支持類似Ruby模塊的內容?

+1

Groovy有[擴展模塊](http://docs.codehaus.org/display/GROOVY/Creating+an+extension+module),但我不知道足夠的Ruby知道他們是否合唱 –

+1

他們看起來像[Singletons](http://mrhaki.blogspot.com.br/2009/10/groovy-goodness-create-singleton-class.html)給我 – Will

+0

@WillP我會給你的......但他們'更容易連線。 – leeand00

回答

2

在ruby模塊中使用mixin或命名空間類(例如Net::HTTP)。

要混入行爲,您可以使用@mixin註釋。像這裏的例子http://groovy.codehaus.org/Category+and+Mixin+transformations

對於命名空間,groovy使用與java相同的機制,即使用包(例如groovy.sql.Sql)。

我不確定這是否回答了您的問題。但是對於依賴注入來說,雖然它在ruby(或者甚至是scala/play)中混合使用,但我還沒有看到它在Groovy中使用@mixin。通常使用像春天一樣的DI容器。

+0

上面的文章中的論點(http://fabiokung.com/2010/05/06/ruby-and-dependency-injection-in-a-dynamic-world/)是,與Ruby模塊相比,DI是笨重的。 。但是如果這確實是真的,那麼我能看到的唯一真正的區別是你不能在Ruby中使用Module/Mixin來做AOP(好吧,這只是對我在這方面對Ruby的有限瞭解......所以它可能實際上是可能的)。 – leeand00

+0

是的,看起來像同樣的功能,它稍微複雜一點,但看起來不太好。 – leeand00