Design Patterns (padrões de design) são arquiteturas genéricas de código que podem ser aplicadas na solução de diversos problemas. Eles foram inicialmente introduzidos pelo livro "Design Patterns: Elements of Reusable Object-Oriented Software" mas continuamos descobrindo novos até hoje. Esses padrões são formas tão boas de se estruturar código que alguns deles já vêm embutidos no Python, como o por exemplo o iterator.
Alguns dos melhores exemplos de aplicação de Design Patterns estão em bibliotecas open source. Estas bibliotecas se utilizam destes padrões para dar flexibilidade e facilidade de integração para os programadores. A biblioteca Python-Social-Auth (PSA) é um ótimo exemplo disso, ela permite integração com um grande número de provedores de autenticação ao mesmo tempo que funciona com os frameworks Django, Flask, Tornado e Pyramid e sabe lidar com os protocolos OAuth1, OAuth2, OpenID e SAML. Isto só é possível por que a PSA foi totalmente construida com base em Design Patterns.
Nesta talk vamos introduzir o que são Design Patterns e destrinchar mais sobre 3 dos mais populares: Adapter, Strategy e Collection Pipeline. Iremos dar exemplos de como aplicar esses padrões em situações reais, mostrar como eles podem melhorar a qualidade do seu código e mostrar como a PSA e outras bibliotecas se utilizam deles.