Qual é o uso de uma estrutura IoC em um aplicativo MVC? [fechadas]

Eu estou tentando entender o uso de uma estrutura de IoC como StructureMap, mas não posso deixar de pensar que esses "padrões de design" são apenas um absurdo, tornando o código mais complexo.

Deixe-me começar com um exemplo em que eu acho que um IoC é um pouco útil.

Eu acho que um IoC pode ser útil ao lidar com a instanciação de classes de controlador em uma estrutura MVC. Neste caso eu estou pensando sobre o framework .NET MVC.

Normalmente, a instanciação da classe do controlador é tratada pela estrutura. Isso significa que você não pode realmente passar nenhum parâmetro para o construtor da sua classe de controlador. É aqui que uma estrutura IoC pode ser útil. Em algum lugar em um contêiner IoC, você especifica que classe deve ser instanciada e passada para seus controladoresconstructor quando a classe do controlador é invocada.

Isso também é útil quando você deseja testar o controlador da unidade, porque você pode simular o objeto que é passado para ele.

Mas como eu disse, eu posso entender um pouco por que as pessoas querem usá-lo para suas classes de controlador. Mas não fora disso. A partir daí você pode simplesmente fazer normalInjeção de dependência.

Mas por que não simplesmente fazer assim:

public class SomeController
{
    public SomeController() : this( new SomeObj() ) 
    {
    }

    publiv SomeController(SomeObj obj)
    {
        this.obj = obj;
    }
}

Agora você não precisa usar nenhuma estrutura IoC de terceiros, o que também significa uma curva de aprendizado mais baixa. Já que você não precisa entrar nas especificações dessa estrutura também.

Você ainda pode zombar do objeto nos seus testes de unidade. Então não há problema também.

A única coisa que você pode dizer é: "mas agora sua aula éfortemente acoplado paraSomeObj"Isso é verdade. Mas quem se importa!? É uma classe de controlador! Eu não vou reutilizar essa classe, nunca ... Então por que diabos eu deveria me preocupar com esse acoplamento apertado ...? Eu posso zombar do objeto que é passou para isso, essa é a única coisa importante.

Então, por que eu deveria me preocupar em usar um IoC? Estou realmente perdendo o ponto ...? Para mim, o padrão IoC é apenas um padrão superestimado. Adicionando mais camadas complexas à sua aplicação ...

questionAnswers(3)

yourAnswerToTheQuestion