有人可以向我解释使用 IOC 容器相对于简单地将默认实现硬编码到默认构造函数中的优势吗?
换句话说,这段代码有什么问题?
public class MyClass
{
private IMyInterface _myInterface;
public MyClass()
{
_myInterface = new DefaultMyInterface();
}
public MyClass(IMyInterface myInterface)
{
_myInterface = myInterface;
}
}
据我所知,这个类足够支持构造函数注入,因此单元测试和模拟很容易完成。除此之外,默认构造函数消除了 IOC 容器的计算开销(更不用说整个过程更加透明)。
我可以看到使用 IOC 容器的唯一好处是如果您需要经常切换接口的实现。我错过了什么吗?