Entenda: Design Patterns
Descubra os princípios dos padrões de projeto na programação (design patterns) e aprenda como aplicar essas soluções reutilizáveis para melhorar a qualidade e a eficiência do seu código.
Quando o profissional começa a desenvolver, bem lá no início da carreira, geralmente desenvolve sistemas apenas "para funcionar", mas não "pronto para expandir". Conforme o desenvolvedor enfrenta desafios, nesse momento procura tirar o máximo proveito da programação Orientada a Objetos (OOP). Mas afinal, o que isso tem a ver com Design Patterns?
Conceito
Design patterns, em português "padrões de design", nada mais é que soluções conhecidas para resolver problemas comuns na engenharia de software.
Em uma analogia simples, as construções de casas seguem basicamente "a mesma receita" desde a construção da base até o telhado. O mesmo se aplica para o sistema hidráulico e elétrico. Trazendo para o universo de um software, imagine um e-commerce onde é possível logar com usuário e senha da própria loja, Facebook ou Google. Qual a melhor forma de construir isso para que fique fácil de integrar outras formas de login? Ou então como fazer para a loja poder integrar diversos meios de pagamento (MercadoPago, PagSeguro, etc.) sem precisar colocar dezenas de "ifs"? Esses problemas são resolvidos com Design Patterns.
Dentro desse mundo existem vários patterns, neste artigo esse tema será abordado de forma resumida para que o leitor compreenda a base. Posteriormente, serão publicados outros artigos com detalhes mais técnicos e de aplicabilidade.
Um pouco de história
Em 1994, os Autores Erich Gamma, Richard Helm, Ralph Johnson e John Vlissides, mais conhecidos como GoF (Gangs of Four - Gangue dos 4, em português), publicaram uma coleção de 23 Design Patterns no livro "Design Patterns: Elements of Reusable Object-Oriented Software". Esse é um dos livros mais populares e o primeiro a falar sobre Design Patterns como elementos reutilizáveis na orientação a objeto.
Classificações e Patterns
Cada pattern tem um nível de complexidade para ser aplicado no projeto. Entretanto, pode-se categorizar de acordo com a proposta de cada um deles. Hoje será apresentado 3 grupos e um "resumo do resumo" de cada pattern.
- Creational Patterns (Padrões para criação de objetos);
- Factory Method;
- Abstract Factory;
- Builder;
- Prototype.
2. Behavioral Patterns (Padrões de comportamento);
- Chain of Responsibility;
- Command;
- Iterator;
- Mediator;
- Memento;
- Observer;
- Stratetegy.
- Structural Patterns (Padrões estruturais).
- Adapter;
- Bridge;
- Composite;
- Decorator;
- Facade;
- Flyweight;
- Proxy.
Considerações Finais
Esse artigo tem por finalidade introduzir o tema ao leitor. Em breve serão publicados outros artigos mais aprofundados para cada pattern bem como explicar a aplicação no dia a dia do Engenheiro de Software.