2013-08-07 53 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