Este é um post disponível para assinantes MVPArtigo .net Magazine 62 - O padrão de injeção de dependência
Artigo da Revista .NET Magazine - Edição 62.
O padrão de injeção de dependência
Usando o Unity Application Block para construir aplicações com baixo acoplamento
A grande maioria das aplicações está repleta de objetos e componentes customizados responsáveis por executar tarefas específicas, genéricas ou complementares tais como envio de e-mail, geração de arquivo texto, logging, autenticação, autorização, manipulação de exceções, extração de informações de uma fonte qualquer, manipulação de dispositivos, entre outros. Na medida em que aumentamos a comunicação entre os módulos de uma aplicação (seja através de componentes, classes ou métodos) geramos uma crescente dependência aumentando sensivelmente sua complexidade de entendimento e tornando a tarefa de aplicação de testes mais extensa. Um dos resultados indesejáveis deste cenário é o alto acoplamento entre os módulos (ou subsistemas), e uma das técnicas mais utilizadas para reverter esse quadro é o chamado Padrão de Injeção de Dependência (Dependency Injection Pattern ou apenas DI).
O problema do alto acoplamento
Podemos medir o quão fortemente as classes de uma aplicação estão conectadas, possuem conhecimento ou dependem de outra classe observando o acoplamento existente em cada caso. Quanto mais acoplada uma classe estiver de outra, maior o risco de termos uma combinação dos seguintes problemas:
· Mudanças numa classe relacionada forçam alterações locais à classe para que o funcionamento seja mantido;
· O reuso da classe torna-se mais difícil uma vez que sua implementação depende de outras classes;
· A coesão da classe diminui na medida em que aumenta o acoplamento caso ela assuma parte das responsabilidades de outra classe;
· A classe não pode ser testada isoladamente já que depende de testes em conjunto com outras classes, aumentando inclusive o esforço de entendimento.
Percebemos rapidamente que diminuindo ao máximo o acoplamento, além de evitarmos os problemas citados, tornaremos nossa aplicação mais flexível e fácil de ser mantida, especialmente em equipes com paralelismo de desenvolvimento de atividades correlatas.
Utilizando as corretas técnicas e ferramentas para injeção de dependência, diversos componentes podem ser desenvolvidos paralelamente e sua aplicação se tornará mais plugável e flexível, exigindo um esforço menor para modificações. Pode-se aproveitar ainda de recursos como Mock Objects para auxiliar nos testes unitários.
Nota do DevMan
Mock Ojects são objetos que simulam o comportamento de outros objetos ou controles complexos implementando a mesma interface das classes reais. Existem diversos frameworks de mock para .Net, dentre eles o NMock disponível em http://www.nmock.org. Esse tipo de objeto é muito utilizado em abordagens de desenvolvimento orientadas a testes, conhecidas como TDD (Test-Driven Development).
ATENÇÃO! A exibição deste artigo foi interrompida.
Este é um post disponível para assinantes MVP
Space do autor



1
0
