Может ли кто-нибудь объяснить мне преимущества использования контейнера IOC для простого жесткого кодирования реализации по умолчанию в конструкторе по умолчанию?
Другими словами, что не так в этом коде?
public class MyClass
{
private IMyInterface _myInterface;
public MyClass()
{
_myInterface = new DefaultMyInterface();
}
public MyClass(IMyInterface myInterface)
{
_myInterface = myInterface;
}
}
Насколько я могу судить, этот класс поддерживает инъекцию конструктора, поэтому простое тестирование и издевательство легко выполнить. В дополнение к этому конструктор по умолчанию удаляет вычислительные издержки контейнера IOC (не говоря уже о том, что весь процесс намного прозрачнее).
Единственными преимуществами, которые я могу видеть в использовании контейнера IOC, является необходимость часто менять реализацию своих интерфейсов. Я что-то пропустил?