{"id":19188929,"url":"https://github.com/kelvins/design-patterns-python","last_synced_at":"2025-04-04T20:15:45.556Z","repository":{"id":49748174,"uuid":"117178854","full_name":"kelvins/design-patterns-python","owner":"kelvins","description":":computer: Padrões de Projeto em Python","archived":false,"fork":false,"pushed_at":"2024-07-03T00:03:05.000Z","size":95,"stargazers_count":510,"open_issues_count":3,"forks_count":113,"subscribers_count":26,"default_branch":"main","last_synced_at":"2025-03-28T19:11:20.333Z","etag":null,"topics":["design-patterns","design-patterns-python","engenharia-de-software","padroes-de-projetos","python","software-engineering"],"latest_commit_sha":null,"homepage":"","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/kelvins.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2018-01-12T02:02:59.000Z","updated_at":"2025-03-26T22:44:13.000Z","dependencies_parsed_at":"2024-11-09T11:38:26.951Z","dependency_job_id":null,"html_url":"https://github.com/kelvins/design-patterns-python","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/kelvins%2Fdesign-patterns-python","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/kelvins%2Fdesign-patterns-python/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/kelvins%2Fdesign-patterns-python/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/kelvins%2Fdesign-patterns-python/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/kelvins","download_url":"https://codeload.github.com/kelvins/design-patterns-python/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":247242681,"owners_count":20907134,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["design-patterns","design-patterns-python","engenharia-de-software","padroes-de-projetos","python","software-engineering"],"created_at":"2024-11-09T11:26:45.981Z","updated_at":"2025-04-04T20:15:45.524Z","avatar_url":"https://github.com/kelvins.png","language":"Python","readme":"# :computer: Padrões de Projeto em Python\n\nMaterial de estudo sobre padrões de projeto em Python com código, descrição e em pt-br :brazil:\n\n|                       | Padrões Comportamentais       | Se concentram nos algoritmos e atribuições de responsabilidades          |\n|-----------------------|-------------------------------|--------------------------------------------------------------------------|\n| [:link:][1]           | [Chain of Responsibility][25] | Nos permite aplicar uma lógica sequencial de forma dinâmica              |\n| [:cop:][2]            | [Command][26]                 | Executa uma sequência de comandos em cima de algum dado                  |\n| [:speech_balloon:][3] | [Interpreter][27]             | Quando precisamos interpretar diversas operações                         |\n| [:loop:][4]           | [Iterator][28]                | Uma maneira de acessar elementos de um objeto sem expor o conteúdo       |\n| [:alien:][5]          | [Mediator][29]                | Encapsula a lógica de comunicação entre um conjunto de objetos           |\n| [:floppy_disk:][6]    | [Memento][30]                 | Guardar um estado que possa ser restaurado futuramente                   |\n| [:sunglasses:][7]     | [Observer][31]                | Criar uma lista de observadores interessados pela criação de um objeto   |\n| [:anger:][8]          | [State][32]                   | Define um conjunto de estados que possui uma ordem definida              |\n| [:bulb:][9]           | [Strategy][33]                | Passa como parâmetro uma função (estratégia) para outro método           |\n| [:ledger:][10]        | [Template Method][34]         | Classes ABC que abstraem métodos em comum entre diversas classes         |\n| [:runner:][11]        | [Visitor][35]                 | Permite navegar pelos elementos de uma estrutura de dados                |\n\n|                             | Padrões de Criação     | São aqueles que abstraem ou adiam o processo de criação dos objetos               |\n|-----------------------------|------------------------|-----------------------------------------------------------------------------------|\n| [:hammer:][12]              | [Abstract Factory][36] | Cria um ou mais métodos de fábrica para criar uma família de objetos              |\n| [:construction_worker:][13] | [Builder][37]          | Recebe parâmetros, verifica a validade e até definir parâmetros padrões           |\n| [:factory:][14]             | [Factory Method][38]   | Permite expor métodos ao cliente para criar novos objetos                         |\n| :one:                       | [Monostate (Borg)][39] | Cria mais de uma instância da classe mas todos os objetos tem o mesmo estado      |\n| [:sheep:][16]               | [Prototype][40]        | O padrão prototype é um padrão utilizado basicamente para clonar objetos          |\n| [:gem:][17]                 | [Singleton][41]        | Garante que apenas um objeto de uma determinada classe seja criado                |\n\n|                        | Padrões Estruturais | Se preocupam com a forma como classes e objetos são compostos                  |\n|------------------------|---------------------|--------------------------------------------------------------------------------|\n| [:electric_plug:][18]  | [Adapter][42]       | Embrulha um objeto para torná-lo compatível com outras classes                 |\n| [:aerial_tramway:][19] | [Bridge][43]        | Dissocia uma abstração de sua implementação para que possam variar             |\n| [:herb:][20]           | [Composite][44]     | Permite tratar objetos individuais de forma uniforme                           |\n| [:art:][21]            | [Decorator][45]     | Permite compor/decorar os parâmetros de forma dinâmica                         |\n| [:package:][22]        | [Facade][46]        | Promove o desacoplamento da implementação com vários clientes                  |\n| [:leaves:][23]         | [Flyweight][47]     | Minimiza o uso de custos computacionais compartilhando dados entre objetos     |\n| [:8ball:][24]          | [Proxy][48]         | Um objeto agente que encapsula o objeto que está realmente servindo            |\n\n## :dancers: Contribuindo\n\nSe você tem interesse em contribuir com o projeto :heart_eyes: por favor leia o documento [CONTRIBUTING](https://github.com/kelvins/design-patterns-python/blob/master/CONTRIBUTING.md).\n\n## :book: Referências\n\n- [Curso Design Patterns Python I: Boas práticas de programação. Alura Online.](https://cursos.alura.com.br/course/design-patterns-python)\n- [Curso Design Patterns Python II: Boas práticas de programação. Alura Online.](https://cursos.alura.com.br/course/design-patterns-python-2)\n- [Aprendendo Padrões de Projeto em Python. Chetan Giridhar. Novatec.](https://novatec.com.br/livros/padroes-projeto-python/)\n- [Design Patterns for Humans](https://github.com/kamranahmedse/design-patterns-for-humans)\n- [Design Patterns: Refactoring Guru](https://refactoring.guru/design-patterns/python)\n- [Padrões de Projeto de Software](https://pt.wikipedia.org/wiki/Padr%C3%A3o_de_projeto_de_software)\n\n[1]: https://pt.wikipedia.org/wiki/Chain_of_Responsibility\n[2]: https://pt.wikipedia.org/wiki/Command\n[3]: https://pt.wikipedia.org/wiki/Interpreter\n[4]: https://pt.wikipedia.org/wiki/Iterador\n[5]: https://pt.wikipedia.org/wiki/Mediator\n[6]: https://pt.wikipedia.org/wiki/Memento_(inform%C3%A1tica)\n[7]: https://pt.wikipedia.org/wiki/Observer\n[8]: https://pt.wikipedia.org/wiki/State\n[9]: https://pt.wikipedia.org/wiki/Strategy\n[10]: https://pt.wikipedia.org/wiki/Template_Method\n[11]: https://pt.wikipedia.org/wiki/Visitor_Pattern\n[12]: https://pt.wikipedia.org/wiki/Abstract_Factory\n[13]: https://pt.wikipedia.org/wiki/Builder\n[14]: https://pt.wikipedia.org/wiki/Factory_Method\n[16]: https://pt.wikipedia.org/wiki/Prototype\n[17]: https://pt.wikipedia.org/wiki/Singleton\n[18]: https://pt.wikipedia.org/wiki/Adapter\n[19]: https://pt.wikipedia.org/wiki/Bridge_(padr%C3%A3o_de_projeto_de_software)\n[20]: https://pt.wikipedia.org/wiki/Composite\n[21]: https://pt.wikipedia.org/wiki/Decorator\n[22]: https://pt.wikipedia.org/wiki/Fa%C3%A7ade\n[23]: https://pt.wikipedia.org/wiki/Flyweight\n[24]: https://pt.wikipedia.org/wiki/Proxy_(padr%C3%B5es_de_projeto)\n\n[25]: comportamentais/chain_of_responsibility\n[26]: comportamentais/command\n[27]: comportamentais/interpreter\n[28]: comportamentais/iterator\n[29]: comportamentais/mediator\n[30]: comportamentais/memento\n[31]: comportamentais/observer\n[32]: comportamentais/state\n[33]: comportamentais/strategy\n[34]: comportamentais/template_method\n[35]: comportamentais/visitor\n[36]: criacao/abstract_factory\n[37]: criacao/builder\n[38]: criacao/factory_method\n[39]: criacao/monostate\n[40]: criacao/prototype\n[41]: criacao/singleton\n[42]: estruturais/adapter\n[43]: estruturais/bridge\n[44]: estruturais/composite\n[45]: estruturais/decorator\n[46]: estruturais/facade\n[47]: estruturais/flyweight\n[48]: estruturais/proxy\n","funding_links":[],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fkelvins%2Fdesign-patterns-python","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fkelvins%2Fdesign-patterns-python","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fkelvins%2Fdesign-patterns-python/lists"}