白天我是一名.NET ASP.NET MVC开发人员,但晚上我正在开发一个用RoR 3.1构建的电子商务应用程序。
我们从一个支付处理器开始,理解我们将在6到8个月内转移到另一个。我不想重复代码,所以如果我在.NET中做这件事,我会创建一个接口并创建一个类来实现该接口。我会为每个支付处理器创建两个类,然后只需使用依赖注入来指定使用哪一个:
ninjectKernel.Bind<IPaymentProcessor>().To<PaymentProcessor1>();
然后,当我们切换时,我所要做的就是将这一行改为PaymentProcessor2。
有没有你知道的教程或代码示例可以引导我走上ruby on rails的相同道路?我知道ruby是动态的,我不需要界面。
任何指导都将不胜感激。
谢谢!
发布于 2011-10-14 16:04:43
对于Ruby,依赖注入通常是不必要的。Jamis Buck blogged extensively关于原因。很值得一读。
发布于 2011-10-14 17:37:43
利用鸭子类型,这是Ruby的动态特性的一部分。如果您的两个支付处理器类都适当地响应了您的应用程序中使用的相同方法,那么您可以自由地交换它们。不需要依赖注入框架。
发布于 2013-10-11 10:02:45
普遍的共识是,虽然DI模式在Ruby中是相关的,但DI容器并不是必需的。
Jamis Buck正在开发一个名为Needle的DI框架,但后来改变了策略,他表示,虽然他每天都使用DI模式,但容器根本不是必要的,因为"Ruby是plah-doh,而Java、.NET和其他需要库来管理DI问题的语言都是块“。
这种想法通常被误解为“你在Ruby中不需要依赖注入”。Jamis传递的信息是,容器不是必需的,就像在任何语言中都不是严格必需的一样--在Ruby语言中更是如此。
虽然大家的共识是容器是不必要的,但也有相当多的容器。值得注意的是Jim Weirrich,Rake和rspec的作者。他创建了一个名为Dim的程序,它代表DI-minimal。
https://stackoverflow.com/questions/7770120
复制