Design Patterns são soluções reutilizáveis para problemas comumente ocorridos (no contexto do design de software). Estes padrões foram iniciados como melhores práticas que foram aplicadas repetidamente a problemas semelhantes encontrados em diferentes contextos. Eles se tornaram populares depois que foram apresentados, de forma estruturada, no livro "Design Patterns - Elements of Reusable Object-Oriented Software" (Gang of Four) em 1994.
O "Gang of Four" representa apenas uma de muitas coleções.
- Produtividade: Estes padrões são modelos de resolução de problemas que já foram utilizados e testados inúmeras vezes;
- Manutenção: Os padrões são baseados em soluções de baixo acoplamento e padronização de soluções;
- Temos Universais: Os projetos são amplamente conhecidos desta forma as discussões técnicas são facilitadas, é mais simples falar o nome de um "design pattern" do que toda vez ter que explicar o seu comportamente.
Antes de começar a apicar padrões de projetos precisamos entender algumas coisas...
Alguns padrões surgiram para solucionar limitações de linguagens de programação com menos recursos no que diz respeito à abstração, nestes casos os padrões era como "gambiarras" que proporcionavam à linguagem a possibilidade de fazer implementações que não eram possíveis nativamente.
Linguagens mais recentes trazem alguns destes recursos nativamente, em alguns outros casos os padrões foram substituídos por padrões mais recentes.
O padrão Strategy, por exemplo, pode ser substituído pelo o uso de uma função anônima.
Os padrões não são soluções prontas, códigos que podemos pegar prontos e "jogar" dentro do projeto, em alguns casos é necessário ajustar o padrão ao contexto em que o projeto necessita, e isso costuma demandar um conhecimento mais profundo por parte da equipe de desenvolvimento.
É comum ver desenvolvedores que ao conhecer um novo padrão/técnica, tentam encaixar ele em todos os cenários, inclusive em situações onde uma abordagem mais simples seria suficiente para resolver o problema.
Um martelo é ótimo para colocar um prego na parede, mas não funciona tão bem se você tiver um parafuso.
Lembre-se: Não é uma competição para ver quem usa mais padrões.
- Duplicidade de Código;
- Código sem estrutura coesa;
- Dificuldade de manter/evoluir;
- Pequenos ajustes podem quebrar o código, inclusive em outras partes do sistema;
- Dificuldade para executar e criar testes unitários; e
- Dificuldade de reaproveitar código para outras aplicações.
- Fácil manutenção;
- Fácil entendimento;
- Organização;
- Aberta a receber novas funcionalidades sem danos colaterais;
- Reaproveitamento de código; e
- Fácil adaptação a mudanças no escopo do projeto.
Cloud Design Patterns: Apresenta os principais desafios do desenvolvimento na nuvem e padrões difundidos no mercado para supera-los.
Certifique seu conhecimento:
Qual a vantagem de se utilizar Design patterns ?
Criar soluções padrões universais de fácil entendimento para todo o time.
O que são design patterns?
São soluções típicas para problemas comuns em projeto de software.
Strategy pattern é um design pattern do tipo:
Comportamental.
O que significa o principio S do S.O.L.I.D. ?
Single responsability (Principio da Responsabilidade Única).
Qual dos itens abaixo NÁO é um design pattern?
Reserve.
O que são os princípios do S.O.L.I.D.?
SOLID é um conjunto de princípios e boas práticas para melhorar o design de software e arquitetura.