Подтвердить что ты не робот

Что такое clojure эквивалент google guice?

Я наткнулся на google guice и не мог понять это и что он сделал, хотя вокруг, похоже, много шумихи. Я надеялся получить клоурианскую перспективу библиотеки и почему она необходима/не нужна в приложениях clojure, и если в язык есть что-то подобное.

4b9b3361

Ответ 1

Из-за системы Java OO и типа динамическое переключение между различными базовыми реализациями (например, для тестовых (издевательских) целей) может быть затруднено. Библиотеки, такие как Google Guice, предназначены для более гибкого управления этими инъекциями зависимостей в Java.

В Clojure и других функциональных языках функции могут быть переданы, что упрощает использование различных реализаций.

В Clojure можно сделать несколько способов:

  • Использование вашего выбора функции в качестве параметров в функциях более высокого порядка.
  • (Re) Связывание вашего выбора функции с var.
  • Инкапсулирование вашего выбора функции внутри закрытий, которые затем могут быть переданы и вызваны.

Глава 12 Clojure Программирование содержит несколько хороших примеров шаблонов OO, таких как инъекция зависимостей и альтернативные способы их обработки в Clojure.

У Шона Девлина также есть Full Disclojure video по Injection Dependency в Clojure. Его пример, возможно, был выбран лучше. Вместо использования совершенно разных функций в его закрытии, он использует factory, который возвращает разные "версии" функции. Суть остается тем же, хотя.

В принципе, инъекция зависимостей - это шаблон, который является необходимым злом в ООП, и может быть легко разрешен (или даже не проблема) в FP.

Ответ 2

Грубые эквиваленты Clojure все еще находятся в разработке. В настоящее время разрабатываются две библиотеки (начиная с октября '12): Prismatic Graph (еще не открытые источники) и Flow Стюарт Сьерра.

Обратите внимание, что я считаю, что Guice больше, чем инъекции зависимостей. Он обеспечивает основу для конфигурации/модуляции приложения. Вышеупомянутые библиотеки нацелены на достижение этой цели.