当前位置:  开发笔记 > 后端 > 正文

Ruby依赖注入库

如何解决《Ruby依赖注入库》经验,为你挑选了2个好方法。

我一直在寻找一些Ruby依赖注入库.特别是,我检查了 Needle和Copland.他们已经存在了很长一段时间,但并没有很多用法.

使用这两个库有哪些优点和缺点?看起来好像很多库/框架都可以很好地利用这两个库,例如Merb/Datamapper的Hook.



1> Mike Woodhou..:

编写Copland和Needle的Jamis Buck 在这里发布了有关Needle,依赖注入以及它们在Ruby世界中的用处的信息.

它很长但值得一读,但如果您想要与您的问题最相关的单个段落,我会在结束之前建议这一段:

DI框架是不必要的.在更严格的环境中,它们具有价值.在像Ruby这样的敏捷环境中,并非如此.模式本身可能仍然适用,但要注意陷入认为需要一个特殊工具的陷阱.Ruby是Play-Doh,请记住!让我们保持这种方式.

HTH


文章并没有说你不应该使用依赖注入,它说你不需要DI框架.这篇文章的另一个引用是:"那么,Ruby中没有DI的空间吗?肯定有.我几乎每天都在Ruby中使用DI,但我没有使用DI框架.Ruby本身有足够的能力代表任何一天你需要的日常用语."
只想指出,*DI Frameworks*在Ruby中是不必要的,但*DI*范例不应该被忽略.
上周末我在RubyConf亲自看了这个演讲,他做了这么棒的工作.底线 - 您不需要Ruby中的依赖注入.

2> Jilles van G..:

http://fabiokung.com/2010/05/06/ruby-and-dependency-injection-in-a-dynamic-world/:这是另一篇比詹姆斯巴克文章更少见解的文章.底线是你不需要依赖注入,因为ruby提供了很多很好的替代方案,它们同样有效,并且在Java世界中并不存在.

其中一个替代方案是mixins,这是Java没有的东西,另一个是能够覆盖/重新定义语言中的任何东西.其他功能包括动态类型,基本上你可以向任何对象发送任何消息,如果碰巧提供了该消息的实现,事情就可以了.所有这些共同努力消除了对DI框架的大量需求.这样的设计模式在Ruby中仍然有效,有时使用它也是有意义的.

Alexey Petrushin上面提到的另一个关于DI的观点是,依赖注入主要是一种设计模式,并且工具是次要的,主要是关于摆脱Java中某些事物的乏味.在ruby中,你可以通过Java轻松模仿spring或guice为你做的大部分事情.因此,完整的依赖注入框架在Ruby中基本上是多余的.

话虽这么说,有时候有一个DI框架是很好的,因为最终它可以带走一些繁琐的布线东西.我不能保证任何Ruby特定的DI框架,但我知道很多Ruby项目最终用另一种语言(Java甚至)重写,因为事物的性质使得事情变得难以维护/扩展.我怀疑这与开发人员用各种强大的语言功能在脚下拍摄有很大关系.有一个DI框架强加了一些结构和习惯用语可能有助于防止这种情况.


同意,尤其是最后一段!
推荐阅读
殉情放开那只小兔子
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有