Fala galeros, como vocês estão? Estou aqui de volta depois de MUITO TEMPO trazendo mais um artigo para vocês aqui no Blog, os últimos meses foram bem complicados e não consegui escrever para vocês, porém agora está tudo bem e eu estou de volta.
Sem mais delongas hoje venho trazendo um artigo de um padrão que não é tão conhecido, porém é EXTREMAMENTE ÚTIL quando trabalhamos com o conceito de hierarquia de objetos, o Composite Pattern.
…
O que é
Frequência de uso: 4/5 – Consideravelmente Alto
O Composite Pattern, é um padrão da família dos estruturais no qual o seu objetivo é agrupar objetos em grupos de forma hierárquica, formando assim uma “ÁRVORE DE OBJETOS”.
Vamos ao cenário, certa vez eu estava trabalhando em um sistema de controle empresarial, em um determinado módulo o sistema controlava quais dispositivos a empresa tinha fornecido para os colaboradores realizarem seu trabalho, os dispositivos variavam de acordo com o grupo do colaborador (função).
Em determinado momento eu precisava exibir um determinado relatório: Grupos -> Usuários -> Dispositivos.
Então para resolver esse problema eu criei uma classe abstrata que servirá como base para cada elemento da “árvore”, e então criei as classes filhas (Grupos, Usuários e Dispositivos) e assim fui adicionando os elementos da árvore de acordo com sua hierarquia.
Ah, é importante lembrar que toda “árvore” tem uma raiz, um ponto inicial, então também é necessário cria – lo.
Segue diagrama do padrão.

…
Show me the code!
Bom então vamos lá, vamos implementar uma versão adaptada do cenário no qual descrevi.
Primeira coisa que precisamos fazer é criar nossa classe abstrata que servirá como base para os outros elementos da árvore.
Item.cs
Com nossa classe base criada, podemos criar a raiz e as classes filhas.
Root.cs
Group.cs
User.cs
Device.cs
Perceba que o código de ambas as 4 são iguais, mas isso é porque nosso exemplo é didático e para aprendizado, em um cenário mais complexo cada um desses filhos (exceto a Raiz) teria comportamentos diferentes (podendo sobrescrever os métodos da classe base).
Por fim precisamos criar agora a classe para usar nossa árvore (gerar o relatório no caso).
Program.cs
Perceba que primeiro criamos nossa raiz, o ponto inicial da árvore, depois criamos os grupos de usuários (cargos ou funções), logo após criamos os usuários e os dispositivos, por fim atribuímos cada dispositivo(s) ao seu usuário e cada usuário(s) a seu grupo.
O resultado da execução.

…
Conclusão
Hoje vimos o Composite Pattern um padrão excelente quando o quesito é agrupar objetos em comum de forma hierárquica, sempre tome cuidado, aplique somente quando necessário, pois aplicado de forma errada pode gerar um débito técnico enorme!
Espero que tenha ficado claro como ele pode nos ajudar no dia
a dia!
Caso precise entrar em contato, me mande uma mensagem aqui.
Baixe o projeto clicando aqui.
AVISO
Minha nova plataforma já está em construção! irá conter todos os recursos dessa plataforma, cursos pagos e gratuitos, treinamentos, mentorias e muito mais, caso queira ter acesso antecipado (gratuito) e ser um dos primeiros a testar me mande um email em lucas.eschechola@outlook.com, obrigado!
