为了编写可测试的C#代码,我大量使用DI.
不过最近我一直在和IronPython搞砸,发现你可以嘲笑任何你喜欢的方法/类/功能等等,DI的需要就消失了.
对于像Python这样的动态联盟,情况就是这样吗?
代替:
class Person(Address) { ...
你可以有:
class Person() { ... // Address initialised in here.
对于动态语言,因此根本不需要动态联盟的动态DI.
有什么建议吗?
依赖注入也是关于如何将东西联系在一起的 – 这与依赖对象的可塑性无关.有一个Foo实例需要某种类型的Bar连接直接实例化,并且完全忽略它如何获得该连接只要具有它的区别.
如果您使用依赖注入,您也可以获得更好的可测试性.但相反的是不正确的.能够覆盖任何东西的更容易的可测试性不会带来依赖注入的其他优点.完全由于这些原因,Python有许多组件/ DI框架.