Design Patterns: Afinal, o que são?
Esse é um tema que geralmente é ignorado em nosso dia a dia de desenvolvedor, seja por falta de conhecimento ou pelo simples fato de não sabermos realmente do que se trata.
Todo software possui um ciclo de vida e em determinado momento alguma modificação acontecerá, seja pela implementação de novas funcionalidades ou correção de bugs. Porém, a realização dessas mudanças sem um bom planejamento pode acarretar em problemas como códigos repetidos, classes altamente acopladas, códigos extensos com muitas responsabilidades prejudicando assim a modelagem do sistema.
Para evitar e também solucionar esses problemas é que os Design Patterns surgiram, mas antes de explica-los, vamos saber da sua origem. Os Design Patterns, ou Padrões de Projetos, ficaram conhecidos depois do lançamento do livro “Design Patterns: Elements of Reusable Object-Oriented Software”, publicado por Erich Gamma, Richard Helm, Ralph Johnson e John Vlissides e que ficaram conhecidos por Gang of Four, ou simplesmente GoF.
Design Patterns são um conjunto de ideias que auxiliam na modelagem e na solução de problemas durante o desenvolvimento do software. Além do mais, essas ideias já foram testadas e aprimoradas ao longo dos anos, nos dando total segurança em utiliza-las. Os Design Patterns não são códigos prontos onde é possível reaproveitar em diferentes aplicações, e sim um modelo de solução de problemas.
Outro ponto interessante é que sua utilização não é restrita a uma determinada linguagem de programação, podendo ser aplicados em conjunto com diversas linguagens existentes no mercado.
O livro citado lista diversos padrões para serem utilizados onde cada padrão exemplifica um problema e sua respectiva solução.
Os Design Patterns são divididos em 3 grupos:
- Creational Pattern (Padrões de criação): Tratam da criação de objetos.
- Structural Pattern (Padrões estruturais): Tratam da relação entre classes e objetos.
- Behavioral Pattern (Padrões comportamentais): Tratam das interações e da divisão de responsabilidade entre as classes.
O uso dos Design Pattern apresenta vários benefícios para o software. Dentre eles, podemos citar:
- Organização do projeto todo, pois a padronização é uma das premissas.
- Fácil manutenção, pois os pattern prezam o baixo acoplamento entre as classes e a alta coesão, de forma que novas implementações possam ser feitas sem muitos problemas.
Com esses benefícios, concluímos que o uso dos patterns auxilia na simplificação e qualidade do código, porém, precisamos refletir quanto ao seu uso em toda e qualquer situação, pois não são todos os problemas que necessitam realmente do uso de algum pattern, e para identificar esses casos, é necessário uma análise antecipada.
É bom ressaltar que uso sem necessidade dos Design Patterns pode acarretar em complexidade desnecessária do código.
Outro ponto importante é que para o desenvolvimento de alguns patterns, é necessário um conhecimento profundo em Orientação de Objetos (OOP).
Então fica um conselho, antes de se aprofundar nesse tema, sugiro que reforçe primeiramente seus conhecimentos em OOP para depois prosseguir com segurança seus estudos.
Até mais!!!