我一直在阅读如何编写可测试代码,并偶然发现依赖注入设计模式。依赖注入进一步向下“链”
这种设计模式是很容易理解,实在没有什么给它,对象请求的值而不是创建它们自己。
然而,现在我在想如何能够使用的应用IM currenty工作我知道有一些并发症它。想象一下下面的例子:
public class A{
public string getValue(){
return "abc";
}
}
public class B{
private A a;
public B(A a){
this.a=a;
}
public void someMethod(){
String str = a.getValue();
}
}
单元测试someMethod()
现在很容易,因为我可以创建一个的模拟,并有getValue()
回我想做的事情。
B类的的依赖关系是通过构造函数注入,但是这也意味着A有B类外被实例化因此这种依赖已经转移到另一个类来代替。这将会重复许多层,并且在某个点上实例化必须完成。
现在的问题是,在使用依赖注入的时候,是否不断传递所有这些层次的依赖关系?这不会让代码更少可读性和更多的时间来调试吗?当你到达“顶层”时,你将如何测试该课程?
这不是依赖注入。你必须在实现它之后创建接口,而不是私有A在你的类b中使用私有IAia,然后传递构造函数对象A并将它分配给你的变量ia – 2013-04-08 12:57:25