Os Design Patterns, ou padrões de projeto, são soluções já modeladas para problemas comuns à um projeto.

Esses padrões de projetos não tratam, especificamente, de reutilização de código, mas sim de uma padronização da modelagem, o que facilitará a documentação e também a vida de outros programadores, por já saberem “onde está cada coisa”.

Existem vários design patterns, e cabe ao analista associar qual é o melhor para cada projeto.

Na verdade, raramente um projeto é implementado somente com um padrão, já que esses tem um certo tipo de relacionamento e, quanto maior o conhecimento do desenvolvedor sobre padrões, mais eficiente será sua modelagem.

Contudo é importante reforçar que a aplicação de um padrão em seu projeto, seja ele qual for, não garante que sua modelagem é eficiente. Mais do que isso, nessa hora a experiência e conhecimento sempre vão ser fatores mais relevantes.

Os padrões de projeto podem ser dividos em:

Padrões de Comportamento

Os Design Patterns classificados como padrões de comportamento tratam de algoritmos que focam nas relações entre os objetos, a fim de melhorar a comunicação entre os mesmos.

Para compartilhar um mesmo tipo de comportamento entre classes diferentes eles fazem o uso de heranças de interfaces e classes abstratas, principalmente.

Os principais padrões de comportamento são:

  •     Chain of Responsibility
  •     Command
  •     Decorator
  •     Interpreter
  •     Iterator
  •     Mediator
  •     Memento
  •     Observer
  •     State
  •     Strategy
  •     Template Method
  •     Visitor

Padrões de Criação

Os processos de criação são responsáveis por “adiar” a criação de objetos. Sua missão principal é então abstrair o processo de criação de objetos a partir da instanciação de classes.

Esses padrões tem como característica o fato do sistema se comunicar com os objetos por meio de classes abstratas, dando maior flexibilidade à criação.

Alguns dos principais padrões de criação são:

Padrões Estruturais

Os padrões estruturais tratam a maneira como objetos e classes estão dispostos em um projeto a fim de formar estruturas mais complexas.

Assim como nos padrões comportamentais, a utilização de interface e classes abstratas em heranças é também muito comum.

Podemos dizer que seu foco é obter flexibilidade no código, alterando e “adicionando funcionalidades” em tempo de execução.

Os principais padrões estruturais são:

// Comente!

comentários