Na
primeira parte dessa série nós apresentamos o design pattern (padrão de design) Singleton. Agora, nosso assunto é o infame padrão Inversão de Controle, também conhecido como Injeção de Dependência.
Injeção de Dependência e Inversão de Controle são tão fortemente relacionados que, algumas vezes, esses dois padrões são classificados como apenas um - e eu vou seguir essa tendência, uma vez que acho que uma Inversão de Controle não existe, de fato, sem algum tipo de Injeção de Dependência. Assim que descrevermos esses padrões, você entenderá a minha posição, mas eu espero que você desenvolva a sua própria opinião a respeito desse assunto.
Para começar a discussão a respeito de padrões aqui apresentados, revisitaremos o padrão Singleton, que será refinado e, então, será usado para hospedar uma dependência externa. Por fim, generalizaremos a Injeção de Dependência através da aplicação de uma Inversão de Controle.
Para os amantes de
Linux e de Open-source, usaremos um software da Microsoft como um antigo exemplo de inversão de controle. Mas vocês precisam perdoar a minha heresia - os produtos da Microsoft também são software e eles usam alguns padrões de design C++ bastante interessantes. Esse assunto é tão extenso que eu peço a você que não espere que o esgotemos nessa parte do tutorial. Lidaremos, agora, somente como o iniciozinho do assunto.
Os artigos, a partir de agora, se tornarão menos amigáveis, e eles exigirão algum nível de conhecimento de
Metaprogramação com Templates. Algum conhecimento sobre como o compilador gera o código C++ intermediário a partir dos templates também é necessário, mas não se preocupe, explicarei as partes mais obscuras a você.
Vamos começar com uma introdução à Metaprogramação com Templates.
Créditos:
[1] Esse artigo foi adaptado de uma série de posts do meu website, em:
http://psfdeveloper.blogspot.com