{"id":26051701,"url":"https://github.com/willian-moreno/design-patterns","last_synced_at":"2026-04-17T16:01:36.470Z","repository":{"id":60850557,"uuid":"545051135","full_name":"willian-moreno/design-patterns","owner":"willian-moreno","description":"Documentação dos conhecimentos adquiridos sobre Design Patterns.","archived":false,"fork":false,"pushed_at":"2022-10-31T16:05:29.000Z","size":8561,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"master","last_synced_at":"2025-03-15T05:55:38.415Z","etag":null,"topics":["behavioral-patterns","creational-patterns","design-pattern","design-patterns","learning","structural-patterns"],"latest_commit_sha":null,"homepage":"","language":"TypeScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/willian-moreno.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2022-10-03T17:43:06.000Z","updated_at":"2022-10-19T16:58:12.000Z","dependencies_parsed_at":"2023-01-21T03:03:22.616Z","dependency_job_id":null,"html_url":"https://github.com/willian-moreno/design-patterns","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/willian-moreno/design-patterns","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/willian-moreno%2Fdesign-patterns","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/willian-moreno%2Fdesign-patterns/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/willian-moreno%2Fdesign-patterns/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/willian-moreno%2Fdesign-patterns/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/willian-moreno","download_url":"https://codeload.github.com/willian-moreno/design-patterns/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/willian-moreno%2Fdesign-patterns/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":31935697,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-17T12:37:54.787Z","status":"ssl_error","status_checked_at":"2026-04-17T12:37:25.095Z","response_time":62,"last_error":"SSL_read: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"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":["behavioral-patterns","creational-patterns","design-pattern","design-patterns","learning","structural-patterns"],"created_at":"2025-03-08T05:04:04.992Z","updated_at":"2026-04-17T16:01:36.457Z","avatar_url":"https://github.com/willian-moreno.png","language":"TypeScript","readme":"# Introdu��o\n\n## O que s�o padr�es de projeto\n\n- S�o solu��es elegantes para problemas conhecidos recorrentes no desenvolvimento de software que foram utilizados e testados no passado e continuam relevantes nos dias atuais.\n- Foram catalogados e popularizados pelo livro \"Padr�es de projeto - Solu��es reutiliz�veis de software orientado a objetos\" (os padr�es da \"GoF\", de 1994/95 - por Erich Gamma, Richard Helm, Ralph Johnson, John Vlissides) - Autores conhecidos como \"gang of four\".\n- S�o divididos em 3 categorias: de cria��o (creational), que visam abstrair o processo de como objetos s�o criados na aplica��o; estruturais (structural), que lidam com a composi��o de classes e objetos; comportamentais (behavioural), que caracterizam como as classes e objetos interagem e distribuem responsabilidades na aplica��o.\n- S�o apenas sugest�es de software que podem ser aplicadas a qualquer linguagem de programa��o.\n- O que � bom:\n  - N�o � preciso duplicar c�digo.\n  - Padr�es universais facilitam o entendimento do projeto.\n  - Evita refatora��o desnecess�ria.\n  - Ajuda na reutiliza��o do c�digo (conceito DRY - Don't repeat yourself).\n  - Abstrai e nomeia partes particulares do projeto.\n  - Ajuda na aplica��o dos princ�pios do design orientado a objetos (SOLID)\n  - Facilitam a cria��o de testes unit�rios.\n- O que � ruim:\n  - Alguns padr�es podem ser complexos para entender.\n  - Muito c�digo quando o objetivo � simples.\n  - Podem trazer otimiza��es prematuras para o c�digo (YAGNI - You Ain't Gonna Need It).\n  - Se usados incorretamente, podem atrapalhar no desenvolvimento.\n\n## Padr�es de projeto por categoria\n\n### Cria��o (Creational):\n\n- Abstract factory\n- Factory Method\n- Builder\n- Prototype\n- Singleton\n\n### Estrutural (Structural)\n\n- Adapter\n- Bridge\n- Composite\n- Decorator\n- Fa�ade\n- Flyweigth\n- Proxy\n\n### Comportamental (Behavioural)\n\n- Interpreter\n- Template method\n- Chain of responsibility\n- Iterator\n- Command\n- Mediator\n- Memento\n- Observer\n- State\n- Strategy\n- Visitor\n\n## Princ�pios do design orientado a objetos (SOLID)\n\n### Single Responsibility Principle (Princ�pio da responsabilidade �nica)\n\n- Uma classe deve ter apenas um motivo para mudar.\n\n### Open/closed principle (Princ�pio do aberto/fechado)\n\n- Classes ou objetos e m�todos devem estar abertos para extens�o, mas fechados para modifica��es.\n\n### Liskov substitution principle (Princ�pio da substitui��o de Liskov)\n\n- Classes derivadas devem ser capazes de substituir totalmente classes-bases.\n\n### Interface segregation principle (Princ�pio da segrega��o de Interface)\n\n- Os clientes n�o devem ser for�ados a depender de interfaces que n�o utilizam.\n\n### Dependency inversion principle (Princ�pio da invers�o de depend�ncia)\n\n- M�dulos de alto n�vel n�o devem ser dependentes do m�dulo de baixo n�vel; ambos devem depender de abstra��es. Detalhes devem depender das abstra��es, n�o o inverso.\n\n---\n\n### Refer�ncias\n\n[Playlist - Ot�vio Miranda](https://www.youtube.com/watch?v=MqddY6Ochkc\u0026list=PLbIBj8vQhvm0VY5YrMrafWaQY2EnJ3j8H\u0026index=1\u0026ab_channel=Ot%C3%A1vioMiranda)\n","funding_links":[],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fwillian-moreno%2Fdesign-patterns","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fwillian-moreno%2Fdesign-patterns","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fwillian-moreno%2Fdesign-patterns/lists"}