Padrões de projeto no PHP

Conheça os cursos gratuitos do WebDevBr! - Inscreva-se!

Padrões de projeto (Design Patterns) no PHP

Nesta série de artigos quero falar um pouco sobre padrões de projeto e alguns assuntos além, vou começar abordando as patterns listadas pela GoF, obviamente não teremos um projeto prático, será mais ou menos um manual sobre o assunto.

Tem um curso introdutório (e grátis) sobre o padrões de projeto aqui no WebDevBr.

O que é padrão de projeto ou design pattern

Padrão de projeto é a tradução de Design Pattern (???, eu deveria colocar "o mesmo que" no lugar de a "tradução de"?), e tem como objetivo resolver problemas que ocorrem com frequência dentro da orientação a objetos.

A Wikipedia ainda define:

Em engenharia de software, um padrão de desenho (português europeu) ou padrão de projeto (português brasileiro) (do inglês design pattern) é uma solução geral reutilizável para um problema que ocorre com frequência dentro de um determinado contexto no projeto de software.

Nenhum padrão de projeto é um esqueleto pronto e definitivo de solução para um problema do dia a dia, ele é um modelo. Não os use como verdade absoluta, a única verdade absoluta é que não existem verdades absolutas.

O que é GoF ou Gang of Four (Gangue dos quatro)

A GoF é formada por Erich Gamma, Richard Helm, Ralph Johnson e John Vlissides, que juntos escreveram um livro chamado Design Patterns: Elements of Reusable Object-Oriented Software em 1994. O livro ganhou muita popularidade e inspirou muitos outros depois.

Eles estabeleceram 23 padrões de projeto (eu vou passar disso aqui, espero) separados em 3 categorias, padrões de criação, estruturais e comportamentais.

** Vou colocar um asterisco nos padrões definidos originalmente pela GoF.**

A medida que os artigos sobre cada padrão for escrito vou colocando os links.

Padrões de criação

Focados na criação de objetos

  • Abstract Factory*
  • Builder*
  • Factory Method*
  • Multiton (Considerado anti-pattern!)
  • Pool
  • Prototype*
  • SimpleFactory
  • Singleton* (Considerado an anti-pattern!)
  • StaticFactory

Padrões estruturais

Focados na associação entre objetos

  • Adapter*
  • Bridge*
  • Composite*
  • DataMapper
  • Decorator*
  • DependencyInjection
  • Facade*
  • FluentInterface
  • Flyweight*
  • Proxy*
  • Registry

Padrões comportamentais

Focados nas interações entre objetos

  • Chain Of Responsibilities*
  • Command*
  • Interpreter*
  • Iterator*
  • Mediator*
  • Memento*
  • NullObject
  • Observer*
  • Specification
  • State*
  • Strategy*
  • TemplateMethod*
  • Visitor*

Mais

  • Delegation
  • ServiceLocator
  • Repository
  • EAV

Conclusão

Claro que ainda existem outros, mas a lista já ficou grande e isso me da muito o que escrever, então vou parar por aqui, quem sabe no futuro eu coloque mais sobre o assunto aqui.

* Parcelamento apenas cartão de crédito! Pode haver uma pequena variação no parcelamento em relação a simulações apresentadas!