{"id":18608864,"url":"https://github.com/tibetteixeira/design-patterns-with-java","last_synced_at":"2025-11-02T18:30:33.853Z","repository":{"id":239160166,"uuid":"787179649","full_name":"tibetteixeira/design-patterns-with-java","owner":"tibetteixeira","description":"Repositório sobre aplicação de padrões de projeto em Java.","archived":false,"fork":false,"pushed_at":"2025-02-04T04:26:36.000Z","size":82,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-02-04T04:28:44.410Z","etag":null,"topics":["behavioral-patterns","creational-patterns","design-patterns","java","structural-patterns"],"latest_commit_sha":null,"homepage":"","language":"Java","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/tibetteixeira.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,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2024-04-16T03:19:26.000Z","updated_at":"2025-02-04T04:26:40.000Z","dependencies_parsed_at":"2024-05-10T12:26:57.841Z","dependency_job_id":"59d6f48e-cba4-41a2-9f45-a0cd32f1f2d9","html_url":"https://github.com/tibetteixeira/design-patterns-with-java","commit_stats":{"total_commits":26,"total_committers":1,"mean_commits":26.0,"dds":0.0,"last_synced_commit":"3b0a3b4504ad76cd8143ef0d4dfcb510082d67b9"},"previous_names":["tibetteixeira/design-patterns-with-java"],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/tibetteixeira%2Fdesign-patterns-with-java","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/tibetteixeira%2Fdesign-patterns-with-java/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/tibetteixeira%2Fdesign-patterns-with-java/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/tibetteixeira%2Fdesign-patterns-with-java/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/tibetteixeira","download_url":"https://codeload.github.com/tibetteixeira/design-patterns-with-java/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":239399813,"owners_count":19632022,"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":["behavioral-patterns","creational-patterns","design-patterns","java","structural-patterns"],"created_at":"2024-11-07T03:04:34.391Z","updated_at":"2025-02-18T02:44:46.131Z","avatar_url":"https://github.com/tibetteixeira.png","language":"Java","readme":"# Padrões de Projeto em Java\n\nEste repositório contém implementações dos principais padrões de projeto em Java. Cada diretório dentro deste repositório é dedicado a um padrão de projeto específico, exemplificando como ele pode ser aplicado no desenvolvimento de software.\n\n## Sumário\n\nEste projeto serve como uma coleção de exemplos práticos e explicações sobre os principais **padrões de projeto** no contexto de Java. A ideia é fornecer soluções reutilizáveis, organizadas e bem documentadas para problemas comuns de design de software.\n\n## Padrões de Projeto Incluídos\n\nAbaixo estão os principais padrões de projeto implementados neste repositório:\n\n### Padrões Criacionais\n1. **[Singleton](/src/main/java/io/tibetteixeira/creational/singleton)** - Garantir que uma classe tenha apenas uma instância e fornecer um ponto global de acesso.\n2. **[Factory Method](/src/main/java/io/tibetteixeira/creational/factorymethod)** - Definir uma interface para criar um objeto, mas permitir que subclasses decidam qual classe instanciar.\n3. **[Abstract Factory](/src/main/java/io/tibetteixeira/creational/abstractfactory)** - Interface para criar famílias de objetos relacionados, sem especificar suas classes concretas.\n4. **[Builder](/src/main/java/io/tibetteixeira/creational/builder)** - Separar a construção de um objeto complexo de sua representação, permitindo a criação de diferentes representações.\n5. **[Prototype](/src/main/java/io/tibetteixeira/creational/prototype)** - Criar objetos clonando-os a partir de protótipos em vez de criar outro objeto a partir do zero.\n\n### Padrões Estruturais\n1. **[Adapter](/src/main/java/io/tibetteixeira/structural/adapter)** - Converter a interface de uma classe em outra que os clientes esperam.\n2. **[Bridge](/src/main/java/io/tibetteixeira/structural/bridge)** - Separar a abstração da implementação, permitindo que ambas evoluam independentemente.\n3. **[Composite](/src/main/java/io/tibetteixeira/structural/composite)** - Compor objetos em estruturas de árvore para representar hierarquias parte-todo.\n4. **[Decorator](/src/main/java/io/tibetteixeira/structural/decorator)** - Anexar responsabilidades adicionais a um objeto dinamicamente.\n5. **[Facade](/src/main/java/io/tibetteixeira/structural/facade)** - Fornecer uma interface unificada para um conjunto de interfaces em um subsistema.\n6. **[Flyweight](/src/main/java/io/tibetteixeira/structural/flyweight)** - Usar o compartilhamento para suportar grandes quantidades de objetos de forma eficiente.\n7. **[Proxy](/src/main/java/io/tibetteixeira/structural/proxy)** - Fornecer um objeto substituto que controla o acesso a outro objeto.\n\n### Padrões Comportamentais\n1. **[Chain of Responsibility](/src/main/java/io/tibetteixeira/behavioral/chain)** - Evitar o acoplamento do remetente de uma solicitação ao seu receptor, permitindo que mais de um objeto tenha a oportunidade de tratar a solicitação.\n2. **[Command](/src/main/java/io/tibetteixeira/behavioral/command)** - Encapsular uma solicitação como um objeto, permitindo que os parâmetros sejam passados, armazenados e manipulados.\n3. **[Iterator](/src/main/java/io/tibetteixeira/behavioral/iterator)** - Fornecer uma maneira de acessar os elementos de um objeto agregado sequencialmente, sem expor a sua representação subjacente.\n4. **[Mediator](/src/main/java/io/tibetteixeira/behavioral/mediator)** - Definir um objeto que centraliza a comunicação entre objetos, evitando o acoplamento direto entre eles.\n5. **[Memento](/src/main/java/io/tibetteixeira/behavioral/memento)** - Capturar e externalizar o estado interno de um objeto sem violar o encapsulamento, permitindo que o objeto seja restaurado posteriormente.\n6. **[Observer](/src/main/java/io/tibetteixeira/behavioral/observer)** - Definir uma dependência um-para-muitos entre objetos, de forma que, quando um objeto mudar de estado, todos os seus dependentes sejam notificados e atualizados automaticamente.\n7. **[State](/src/main/java/io/tibetteixeira/behavioral/state)** - Permitir que um objeto altere o seu comportamento quando o seu estado interno mudar.\n8. **[Strategy](/src/main/java/io/tibetteixeira/behavioral/strategy)** - Definir uma família de algoritmos, encapsular cada um deles e torná-los intercambiáveis.\n9. **[Template Method](/src/main/java/io/tibetteixeira/behavioral/template)** - Definir o esqueleto de um algoritmo, deixando alguns passos a serem implementados pelas subclasses.\n","funding_links":[],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ftibetteixeira%2Fdesign-patterns-with-java","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Ftibetteixeira%2Fdesign-patterns-with-java","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ftibetteixeira%2Fdesign-patterns-with-java/lists"}