我遇到了谷歌guice,并不能真正理解它和它做了什么,虽然它周围似乎有很多炒作.我希望得到一个关于库的clojurian视角以及为什么在clojure应用程序中需要/不需要它,以及语言中是否有类似内容.
Nie*_*lsK 14
由于Java的OO和类型系统,在不同的底层实现之间动态切换(例如,用于测试(模拟)目的)可能难以管理.像Google Guice这样的库旨在更优雅地处理Java中的这些依赖注入.
在Clojure和其他函数式语言中,可以传递函数,这使得使用不同的实现变得更加容易.
有几种方法可以在Clojure中完成:
Clojure编程的第12章有一些很好的OO模式示例,例如依赖注入以及在Clojure中处理这些模式的替代方法.
Sean Devlin还有关于Clojure中依赖注入的完整Disclojure视频.不过,他的榜样可能更好.他没有在闭包中使用完全不同的函数实现,而是使用返回函数的不同"版本"的工厂.尽管如此,要点保持不变.
基本上,依赖注入是一种在OOP中必不可少的模式,并且可以在FP中轻松解决(或者甚至不是问题).