Padrões de Projeto em Python

Kelvin Salton do Prado
3 min readJul 14, 2018

Quem desenvolve software, principalmente profissionalmente, a algum tempo sabe bem que alguns problemas ocorrem com certa frequência, e é ai que entram os Padrões de Projeto de Software.

Em Engenharia de Software, um padrão de projeto (do inglês design pattern) é uma solução geral para um problema que ocorre com frequência dentro de um determinado contexto no projeto de software.

Um padrão de projeto não é uma solução pronta nem um projeto finalizado, mas sim um modo de abordar um problema já conhecido e estudado. Neste contexto, padrões de projeto são boas práticas para a solução de problemas, e podem ser facilmente utilizados com linguagens orientadas a objetos (mas não se limitam apenas a estas).

O arquiteto Christopher Alexander coloca que um padrão de projeto deve ter, idealmente, as seguintes características: Encapsulamento, Generalidade, Equilíbrio, Abstração, Abertura e Combinatoriedade, sendo assim robusto para resolver um problema pequeno ou grande e específico para resolver um problema singular.

Apesar de Christopher Alexander falar dos padrões de projeto desde a década de 70, eles ganharam popularidade somente em 1995 com o livro Design Patterns: Elements of Reusable Object-Oriented Software escrito pelos pelos autores Erich Gamma, Richard Helm, Ralph Johnson e John Vlissides, também conhecidos como a “Gangue dos Quatro” (do inglês Gang of Four ou simplesmente GoF).

De acordo com o livro, os padrões são divididos em 23 tipos que são organizados em 3 categorias, sendo eles:

Ao começar a estudar os padrões de projeto você provavelmente vai se perguntar, mas isso é realmente necessário? Isso está aumentando a complexidade do código! Não seria mais fácil criar uma meia dúzia de IFs e resolver de uma vez o problema?

É claro que nem sempre os padrões de projeto podem ou devem ser aplicados. Se você precisa resolver um problema simples, muitas vezes pode não ser necessário aplicar um padrão de projeto. Por outro lado, se você possui um problema que sabe que poderá crescer futuramente, pense bem antes e estude os padrões de projeto mais a fundo, isso poderá te poupar horas ou até dias de codificação e refatoração.

Beleza, mas o título do post é Padrões de Projeto em Python e até agora só falamos sobre os padrões, então onde entra o Python nessa história?

Sem dúvida alguma a linguagem Python é ótima para aplicar padrões de projeto, principalmente por ser orientada a objetos, ter tipagem dinâmica, dentre outras coisas.

Por esse motivo, resolvi criar um repositório no Github chamado design-patterns-python o qual utilizo para estudar e divulgar os padrões de projeto com informações em português. O objetivo desse repositório é introduzir os padrões de projeto com uma linguagem simples e relativamente fácil para quem nunca aplicou eles na prática. Acredito que assim podemos fazer um mundo com menos gambiarras :) . Se você curtir o projeto fique à vontade para contribuir criando issues ou pull requests com alterações ou melhorias, toda a ajuda é bem vinda.

Referências:

--

--