design-patterns-python
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
- Curso Design Patterns Python I: Boas práticas de programação. Alura Online.
- Curso Design Patterns Python II: Boas práticas de programação. Alura Online.
- Aprendendo Padrões de Projeto em Python. Chetan Giridhar. Novatec.
- Design Patterns for Humans
- Design Patterns: Refactoring Guru
- Padrões de Projeto de Software