Inversão de Controlo
A inversão de controlo é um conceito genérico que abrange grande parte da engenharia de software e aplica-se a qualquer situação em que o controlo de um componente é transferido entre entidades. Um exemplo é a mudança de interfaces por linha de comandos para interfaces gráficas, onde o controlo da execução do programa foi transferido do programa para o utilizador. Recentemente, este conceito tem sido usado no caso específico de dependências entre objetos.
“Não nos chame, nós chamamo-lo” é uma expressão muito utilizada para caracterizar este padrão. O objetivo deste padrão é diminuir a alta dependência entre classes. Para o explicar melhor utilizaremos uma situação real.
O Vasquinho é uma pessoa que todos os dias na hora do almoço do trabalho come uma pizza. Ele está sempre dependente dessa pizza, no entanto precisa de se deslocar até à pizzaria que fica a 15 minutos do trabalho, ou seja, o Vasquinho, sempre que quer comer uma pizza, precisa de se deslocar até à pizzaria. Ele reflectiu melhor e chegou à conclusão que poderia inverter a situação. Pensou “e se a pizzaria me trouxesse a pizza ao local de trabalho? Iria poupar tempo e podia comer a pizza que quisesse". Assim o fez, sempre que precisava da pizza da qual dependia, a pizzaria levava-a ao seu gosto, ou seja, ele inverteu o controlo da situação.
O mesmo acontece com os objetos, sempre que um objeto precisa de outro, alguma entidade lhe entregará esse objeto, podemos dizer que essa entidade está responsável pela injeção dessa dependência.
Existem várias maneiras de resolver este problema, entre as quais se destacam:
Utilização de factories;
Utilização de localizadores de serviços;
Utilização de injeção de