design-patterns-python icon indicating copy to clipboard operation
design-patterns-python copied to clipboard

:computer: Padrões de Projeto em Python

:computer: Padrões de Projeto em Python

Material de estudo sobre padrões de projeto em Python com código, descrição e em pt-br :brazil:

Padrões Comportamentais Se concentram nos algoritmos e atribuições de responsabilidades
:link: Chain of Responsibility Nos permite aplicar uma lógica sequencial de forma dinâmica
:cop: Command Executa uma sequência de comandos em cima de algum dado
:speech_balloon: Interpreter Quando precisamos interpretar diversas operações
:loop: Iterator Uma maneira de acessar elementos de um objeto sem expor o conteúdo
:alien: Mediator Encapsula a lógica de comunicação entre um conjunto de objetos
:floppy_disk: Memento Guardar um estado que possa ser restaurado futuramente
:sunglasses: Observer Criar uma lista de observadores interessados pela criação de um objeto
:anger: State Define um conjunto de estados que possui uma ordem definida
:bulb: Strategy Passa como parâmetro uma função (estratégia) para outro método
:ledger: Template Method Classes ABC que abstraem métodos em comum entre diversas classes
:runner: Visitor Permite navegar pelos elementos de uma estrutura de dados
Padrões de Criação São aqueles que abstraem ou adiam o processo de criação dos objetos
:hammer: Abstract Factory Cria um ou mais métodos de fábrica para criar uma família de objetos
:construction_worker: Builder Recebe parâmetros, verifica a validade e até definir parâmetros padrões
:factory: Factory Method Permite expor métodos ao cliente para criar novos objetos
:one: Monostate (Borg) Cria mais de uma instância da classe mas todos os objetos tem o mesmo estado
:sheep: Prototype O padrão prototype é um padrão utilizado basicamente para clonar objetos
:gem: Singleton Garante que apenas um objeto de uma determinada classe seja criado
Padrões Estruturais Se preocupam com a forma como classes e objetos são compostos
:electric_plug: Adapter Embrulha um objeto para torná-lo compatível com outras classes
:aerial_tramway: Bridge Dissocia uma abstração de sua implementação para que possam variar
:herb: Composite Permite tratar objetos individuais de forma uniforme
:art: Decorator Permite compor/decorar os parâmetros de forma dinâmica
:package: Facade Promove o desacoplamento da implementação com vários clientes
:leaves: Flyweight Minimiza o uso de custos computacionais compartilhando dados entre objetos
:8ball: Proxy Um objeto agente que encapsula o objeto que está realmente servindo

:dancers: Contribuindo

Se você tem interesse em contribuir com o projeto :heart_eyes: por favor leia o documento CONTRIBUTING.

:book: Referências