2013-08-07 1 views
1

Ruby modules сделать вещи как прохождение database connection or other dependencies для различных объектов намного проще, позволяя разделять проблемы. Поддерживает ли Groovy аналогичную функциональность? И если так, то что это называется?У Groovy есть поддержка чего-то вроде Ruby Modules?

+1

У Groovy есть [Extension Modules] (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

В рубиновых модулях используются либо как миксины, либо для пространства имен класса (например, Net::HTTP).

Чтобы смешивать поведение, вы можете использовать аннотацию @mixin. например, здесь http://groovy.codehaus.org/Category+and+Mixin+transformations.

В пространство имен groovy использует тот же механизм, что и java, используя пакеты (например, groovy.sql.Sql).

Я не уверен, ответил ли это на ваш вопрос или нет. Но для инъекции зависимостей, в то время как его общий способ сделать это в рубине (или даже в scala/play), я не видел, чтобы он делал много, используя @mixin в groovy. Обычно используется контейнер DI, такой как пружина.

+0

Аргумент в статье выше (http://fabiokung.com/2010/05/06/ruby-and-dependency-injection-in-a-dynamic-world/) заключается в том, что DI неудобен по сравнению с модулями Ruby. но если это действительно так, то единственное реальное различие, которое я вижу, заключается в том, что вы не можете делать АОП в Ruby с помощью модуля/Mixin (ну, и это правда только в отношении моих ограниченных знаний о Ruby в этой области ... так что это действительно возможно). – leeand00

+0

Да, это похоже на аналогичную функциональность, это немного сложнее, но не очень хорошо выглядит. – leeand00