Algum humor e C++ Design Patterns (parte 2)
Continuamos a discussão a respeito de Singletons, iniciada na primeira parte desse artigo até chegarmos à Injeção de Dependência. As coisas agora se tornam profundamente C++. Transformamos os Singletons em contêineres, para torná-los efetivamente reutilizáveis e discutimos a teoria que existe por trás dos Templates do C++ e de como a metaprogramação é feita nessa linguagem.
Introdução
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
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
Estou impressionado com a sua destreza no assunto! Há tempos que não aprendia coisas tão interessantes assim em POO. O artigo está incrível, conceitos de alto nível explicados de uma forma simples, sem deixar de ser filosófica.
O Templeton foi algo esplendoroso, quase cai da cadeira quando você o manifestou. Com esta série, começo a ver que metaprogramação vale muito a pena e que apesar de ser um investimento árduo, não hesitarei em aprendê-la.
Obrigado por compartilhar tanto conhecimento, desejo sucesso e boa sorte com a Featherns.
Abraço!
P.S.: Quando li no agregador de feeds: Design Patterns (parte 2), parei tudo que estava fazendo para prestigiar o artigo. :-)