O Conceito de inversão de controle não é novo, já existe a algum tempo e visa resolver o problema do alto acoplamento entre classes. Quando um sistema é desenvolvido, e não se tem a visão de boas práticas de desenvolvimento de software, corre-se o risco de desenvolver o mesmo com um alto acoplamento entre as classes. Este alto acoplamento se dá quado existe uma dependência muito forte entre as mesmas e quanto maior for a cadeia de dependência entre elas será mais custoso de se dar manutenção, perdendo até a dimensão do impacto que uma determinada mudança nesta cadeia de dependência poderá causar . Com o fato dos softwares evoluírem muito rapidamente, você deverá evitar este tipo de problema na sua aplicação. Observe as figuras abaixo:
Dependência entre objetos sem inversão de controle
Dependência entre objetos utilizando inversão de controle
A discussão sobre inversão de controle é antiga, tem mais de 20 anos e foi Uncle Bob em 1996 que difundiu o termo. Ele dizia que “Módulos de Alto nível não devem depender de módulos de baixo nível. Ambos devem depender de abstrações” e “abstrações não devem depender de detalhes, devem depender de abstrações”, é justamnete o que o exemplo acima nos mostra, note que na figura 1 apresenta uma forte dependência entre os ojetos A e B e qualquer mudança em qualquer um deles irá causar um impacto no outro, já na figura 2 há a inversã de controle em que o objeto A, já não depende concretamnete do objeto B e sim da sua abstração. É ai que está a inversão de controle, pois agora a dependência está na direção oposta antes a dependência estava na direção do objeto B e agora a dependência de ambos está na direção da abstração. E esta inversão de controle vai garantir o baixo acoplamento entre as classes facilitando a manutenção, caso seja necessário que a mesma se realize o impacto será bem menor. Existem varias maneiras de fazer inversão de controle e uma destas técnicas é a que aborademos em um próximo post que é a injeção de dependência que uma vez sendo utilizada, garante um baixo acoplamento entre as camadas e nos faz ter uma aplicação mais “plugável”, isto é assunto para um próximo post abraços e até a próxima.


2 Trackbacks/Pingbacks
[...] in Uncategorized Em um post recente neste blog, falei sobre a inversão de controle ou inversão de dependência, que é uma técnica utilizada para diminuir o acoplamento entre [...]
[...] Boas Práticas Em um post recente neste blog, falei sobre a inversão de controle ou inversão de dependência, que é uma técnica utilizada para diminuir o acoplamento entre [...]