Design Patterns
Sempre que vamos estudar a fundo arquitetura de sistemas, principalmente para desenvolvimento orientado a objeto, em muitas literaturas vêm nos falando da importância de usarmos design patterns, que nada mais são do que padrões de “designs”, mais conhecidos como padrões de projeto.
Uma grande dificuldade quando vamos estudar, é lembrar de todos os padrões – ainda mais que muitas das vezes estudamos esses padrões em livros, artigos e vídeos. O próprio João Batista Neto, um dos devs brasileiros que mais estuda sobre desenvolvimento orientado a objetos fala um pouco da loucura que é estudar padrões na sua palestra do PHP Experience 2017.
Estudos
Para iniciar seus estudos em design patterns muitos, inclusive o João e eu, indicam o livro Design Patterns, Elements of Reusable Object-Oriented Software. Esse livro é basicamente uma bíblia para quem quer se aprofundar no assunto.
Porém, muitas pessoas sentem falta de ter algo mais organizado, com um guia dos padrões e usabilidades de fácil acesso e mais fáceis de utilizar. Então, onde podemos estudar os design patterns sem ser através de livros ou vídeos? No GitHub.
O que acontece é que o quarto projeto PHP em número de estrelas no GitHub é o projeto domnikl/DesignPatternsPHP que nada mais é do que um compilado com a maioria dos design patterns conhecidos com exemplos de implementação em PHP e uma leitura complementar comentando o que é cada design pattern e introduzindo diagramas, juntamente com exemplos.
No readme do projeto, existe a documentação de todos os design patterns presentes no projeto com seus respectivos UMLs e códigos utilizados no padrão Read The Docs. Extremamente organizado, com uma explicação direta do que aquele padrão representa e um exemplo de implementação do padrão em PHP.
Caso você queira saber um pouco sobre o padrão “Factory Method” por exemplo:
E o mesmo vale para muitos dos design patterns que podem ser implementados em PHP. Espero que goste das dicas e que com esse projeto você aprenda ainda mais sobre OOD.
Um grande abraço e até a próxima!