Inversão de Controle (IoC)
Definição
A Inversão de Controle (Inversion of Control – IoC) é um princípio da arquitetura de software que propõe inverter a forma tradicional de controle de um sistema: em vez de um componente criar e coordenar os objetos de que precisa, ele delega essa responsabilidade para um mecanismo externo.
Na prática, isso significa que o fluxo de execução e a criação de dependências são controlados por um container, framework ou outra estrutura externa — não pelo código do componente em si.
Por que é importante
A IoC ajuda a construir sistemas mais modulares, testáveis e reutilizáveis. Ao remover a responsabilidade de controlar diretamente as dependências, os componentes ficam mais focados na lógica que realmente precisam executar.
Esse princípio é base para padrões como Injeção de Dependência e para a forma como muitos frameworks modernos funcionam, como Spring (Java), Angular (JavaScript), NestJS (TypeScript) e .NET.
Exemplo prático (em Python)
Sem IoC, um componente criaria todas as dependências de forma direta:
class Servico:
def __init__(self):
self.repositorio = Repositorio() # controle interno
def executar(self):
self.repositorio.salvar()
Com IoC, o controle da criação da dependência é invertido: o Repositorio
é fornecido de fora:
class Servico:
def __init__(self, repositorio):
self.repositorio = repositorio # fornecido externamente
def executar(self):
self.repositorio.salvar()
Esse princípio pode ser implementado manualmente (como no exemplo acima) ou automatizado com frameworks que fazem a injeção de dependências automaticamente.