Padrões de Design em PHP

Padrões de Design em PHP

Olá, hoje eu começo aqui no Medium e quero começar falando sobre Padrões de Design, os Design Patterns, em desenvolvimento Web, mais especificamente em PHP. 

Este é um assunto pertinente tanto para desenvolvedores mais experientes mas principalmente para quem está começando agora na carreira.

Quando estamos projetando um novo sistema ou aplicativo, sempre nos deparamos com certas situações e problemas quenos tomam tempo e que se não forem observados e resolvidos, podem comprometer todo o projeto, tanto na performance quando em escalabilidade, além de outras situações que pode te levar ao retrabalho ou pior, ter que refazer todo o projeto.

É aí que entram os padrões de design, mas eles não são código propriamente, mas uma descrição ou um modelo de como resolver problemas comuns durante o desenvolvimento de um aplicativo ou um sistema. Em outras palavras, os padrões de design fornecem uma solução genérica reutilizável para os problemas de programação que encontramos todos os dias.

Esses padrões não são classes ou bibliotecas prontas, que podem ser simplesmente aplicadas ao seu sistema, não é uma solução concreta que possa ser convertida em código-fonte, padrões de design são muito mais que isso! São padrões ou modelos que podem ser implementados para resolver um problema em diferentes situações particulares.

Até agora existem 23 padrões de design conhecidos diferentes, e eles podem ser separados em três categorias por finalidade:

  • Padrões criacionais: Usados ​​para construir objetos de forma que possam ser dissociados de seu sistema de implementação
  • Padrões Estruturais: Usados ​​para formar estruturas de objetos grandes entre muitos objetos diferentes
  • Padrões Comportamentais: Usados ​​para gerenciar algoritmos, relacionamentos e responsabilidades entre objetos.

Vamos ver alguns dos padrões listados acima na prática.

Singleton

Acredito que este seja o padrão mais popular de todos. 

Ao desenvolver aplicativos Web, geralmente faz sentido conceitualmente e arquitetonicamente permitir o acesso a apenas uma instância de uma determinada classe (durante o tempo de execução). O padrão Singleton é o cara que nos permite fazer isso. Veja um exemplo:

Strategy

O padrão Strategy é baseado em algoritmos. Você encapsula famílias específicas de algoritmos, permitindo que a classe do cliente responsável por instanciar um determinado algoritmo não tenha conhecimento da implementação real. Veja um exemplo:

Factory

Este é outro padrão bastante conhecido, e ele funciona exatamente como o nome sugere. 

Essa classe funciona como uma verdadeira fábrica de instâncias de objetos. Em outras palavras, suponha que sabemos que existem fábricas que produzem algum tipo de produto, mas não nos importamos como uma fábrica fabrica este produto, mas sabemos que qualquer fábrica tem uma maneira universal de pedir isso. Vejamos um exemplo:

Abstract Factory

Há situações em que temos algumas fábricas dos mesmos tipos e queremos encapsular a lógica da escolha, o que as fábricas usam para uma dada tarefa. Veja como fica em um exemplo:

Object Pool

O padrão Object Pool é um padrão de design criacional que usa um conjunto de objetos inicializados mantidos prontos para uso (um “pool”) em vez de alocá-los e destruí-los sob demanda. Vejamos:

Bom, ainda há muito o que falar sobre este assunto, minha intenção aqui era somente apresentar alguns conceitos e dar aquela “instigada” à pesquisa e ao aprendizado, especialmente para quem está começando.

Tenho muito material para publicar ainda e levará algum tempo até que consiga organizar tudo, mas pretendo abordar mais a fundo alguns dos Design Patterns que eu mais uso.

Referências

 

Comentarios

design-patterns php design pattern padrões de design padrões