我会再尝试。我的最后一个答案错过了这个问题,并且偏离了主题。
使用伪代码,依赖注入说:
class Person
def Chat() {
someOperation("X","Y","Z")
end
end
...
Person.new().Chat()
并与:
class Person
initialize(a,b,c)
@a=a
@b=b
@c=c
end
def Chat()
someOperation(@a,@b,@c)
end
end
...
Person.new("X","Y","Z").Chat()
,., 并且通常将对象和调用放入不同的文件以用于 SCM 目的。
“X”、“Y”或“Z”是否是可模拟的(......如果它们是对象......(!)......(!)......)与 DI 是否好完全无关. 真的。:-)
DI 在 Python 或 Ruby 中更容易,就像许多其他任务一样,因为有更多的脚本方法,就像 Jörg 说的那样;当然也少了一种文化和一种趋势,即常量和适配器将被填充到模型和全局常量中。
实际上,对我来说,DI 是将这些应用程序参数、API 常量和工厂分离到单独的文件中的第一步,以帮助使您的修订跟踪报告看起来不那么像意大利面条(“那些在 AppController 上额外签入以更改配置。 .? 或更新代码...?”)和更多信息,更易于阅读。
我的建议:继续使用 DI ... :-)