Design Patterns

Jones Roberto Nuzzi
3 min readOct 4, 2019

--

São padrões para solucionar problemas comuns que aparecem ao desenvolver software. Eles são como modelos “pré-fabricados” que você pode utilizar para resolver problemas recorrentes em seu design de software.

Padrões não são trechos de códigos específicos, mas sim um conceito geral para resolver problemas específicos, assim você precisa seguir o pattern e adaptar ao seu problema baseado na realidade do seu software.

Breve história

Padrões são soluções típicas para problemas comuns no design orientado à objetos, quando uma solução é repetida várias vezes em muitos projetos, eventualmente alguém dá um nome e tenta descrever a solução em detalhes.É basicamente assim que um padrão é descoberto.

Padrões de design de software orientado a objetos foi publicado em 1995 por Erich Gamma, John Vlissides, Ralph Johnson e Richard Helm no livro “Design Patterns: Elements of Reusable Object-Oriented Software”, onde foram descritos 23 padrões que resolviam vários problemas de design orientado a objetos e se tornou um best-seller muito rapidamente. Devido ao seu nome ser muito extenso o livro foi batizado de GoF (Gang of Four).

Por que é importante sabermos patterns?

A verdade é que você pode trabalhar por anos como programador sem precisar conhecer um único padrão, muitas pessoas fazem exatamente isso, mas possivelmente elas estão implementando algum padrão sem necessariamente saber disso. Então ficamos com a pergunta “Porque é importante sabermos os design patterns?”. Vou tentar ser preciso para explicar as razões:

  • Os design patterns são basicamente soluções que foram implementadas, testadas e comprovadas como eficazes para problemas comuns no design de software. Mesmo que você nunca se depare com esses problemas, conhecer padrões ainda é útil porque ensina como resolver todos os tipos de problemas usando princípios de design orientado a objetos e isso pode simplificar a forma de resolver problemas cotidianos ao desenvolver software.
  • Os design patterns definem palavras comuns para citar um problema especifico e assim fica mais fácil de se comunicar.Você pode dizer: “Use singleton nesse caso” e todos os envolvidos no processo entenderão a ideia citada, não seria necessário explicar o que é um singleton se você souber o padrão e o nome.

Classificando os design patterns

Os design patterns se diferem por sua complexidade, nível de detalhe e escala de aplicabilidade para todo o sistema que está sendo projetado.

Os patterns mais básicos e de baixo nível são chamados de expressões idiomáticas, geralmente se aplicam apenas a uma única linguagem de programação.

Os design patterns mais universais e de alto nível são os padrões arquiteturais. Os desenvolvedores podem implementar esses padrões em praticamente qualquer linguagem de programação. Diferentemente de outros padrões, eles podem ser usados para projetar a arquitetura de um aplicativo inteiro.

Além disso podemos classificar todos os padrões por sua intenção ou propósito, irei tentar cobrir os três grupos citados pelo gof exemplificando os principais padrões:

  • Creation Patterns (padrões criacionais) fornecem mecanismos de criação de objetos que aumentam a flexibilidade e a reutilização de código existente. (Iremos representar pela letra “C”)
  • Structural patterns ( padrões estruturais) explicam como montar objetos e classes em estruturas maiores, mantendo as estruturas flexiveis e eficientes. (Iremos representar pela letra “S”)
  • Behavioral patterns (padrões comportamentais) cuidam da comunicação eficaz e da atribuição de responsabilidade entre objetos. (Iremos representar pela letra “B”)

Abaixo uma imagem com os 23 padrões do GOF.

Os 23 padrões do GOF

Irei fazer uma série de postagens tentando cobrir os patterns que acho que são os principais para a maioria dos problemas que enfrentei enquanto desenvolvia software.

Abraço e até a próxima.

Repositório do Projeto

--

--

Jones Roberto Nuzzi

Arquiteto de Sistemas na Riza Asset, Sempre focado em desenvolvimento de sistemas para o mercado financeiro, com mais de 15 anos de experiência!