{"id":23557324,"url":"https://github.com/jordanmarcelino/java-design-patterns","last_synced_at":"2025-10-15T16:08:09.604Z","repository":{"id":260412766,"uuid":"881224553","full_name":"JordanMarcelino/java-design-patterns","owner":"JordanMarcelino","description":"Design Patterns Implemented in Java","archived":false,"fork":false,"pushed_at":"2024-12-13T08:48:05.000Z","size":58,"stargazers_count":0,"open_issues_count":3,"forks_count":1,"subscribers_count":1,"default_branch":"main","last_synced_at":"2024-12-26T14:32:23.116Z","etag":null,"topics":["behavioral-patterns","creational-patterns","design-patterns","java","spring-boot","structural-patterns","unit-testing"],"latest_commit_sha":null,"homepage":"","language":"Java","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/JordanMarcelino.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"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":"2024-10-31T06:21:03.000Z","updated_at":"2024-12-13T09:52:04.000Z","dependencies_parsed_at":"2024-12-26T14:38:56.303Z","dependency_job_id":null,"html_url":"https://github.com/JordanMarcelino/java-design-patterns","commit_stats":null,"previous_names":["jordanmarcelino/java-design-patterns"],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/JordanMarcelino%2Fjava-design-patterns","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/JordanMarcelino%2Fjava-design-patterns/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/JordanMarcelino%2Fjava-design-patterns/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/JordanMarcelino%2Fjava-design-patterns/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/JordanMarcelino","download_url":"https://codeload.github.com/JordanMarcelino/java-design-patterns/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":239309768,"owners_count":19617958,"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","spring-boot","structural-patterns","unit-testing"],"created_at":"2024-12-26T14:28:08.615Z","updated_at":"2025-10-15T16:08:09.377Z","avatar_url":"https://github.com/JordanMarcelino.png","language":"Java","readme":"# Design Patterns Implemented in Java\nLearning design patterns with Java.\n\n## Introduction\nDesign patterns are formalized best practices that help solve common problems in software design. These patterns represent proven solutions that improve code readability, flexibility, and scalability by following principles of object-oriented design. They are categorized into three main types:\n\n### 1. **Creational Patterns** \nThese patterns provide ways to create objects while hiding the creation logic, rather than instantiating objects directly. This approach enhances flexibility in terms of object creation and allows for more efficient memory management. Examples include:\n\n- **Singleton**: Ensures only one instance of a class exists.\n- **Factory Method**: Defines an interface for creating objects, but allows subclasses to alter the type of objects created.\n- **Builder**: Constructs complex objects by separating their representation from the creation process.\n\n### 2. **Structural Patterns**: \nThese patterns focus on object composition and relationships between objects, making it \neasier to develop structures that are flexible and efficient. Examples include:\n\n- **Adapter**: Allows incompatible interfaces to work together.\n- **Decorator**: Adds new functionality to an object dynamically.\n- **Composite**: Combines objects into tree-like structures to represent part-whole hierarchies.\n\n### 3. **Behavioral Patterns**: \nThese patterns are concerned with communication between objects, focusing on the flow \nand control of data. Examples include:\n\n- **Observer**: Defines a one-to-many relationship so that when one object changes, all dependents are notified.\n- **Strategy**: Enables selecting an algorithm's behavior at runtime.\n- **Command**: Encapsulates a request as an object, allowing for parameterization of clients with different requests.\n\n## Project Overview\nIn this repository, I’ll be implementing these design patterns in Java, with examples and testing for each pattern. The \ngoal is to provide a practical understanding of each pattern's purpose, usage, and benefits in real-world applications.\n\n### Repository Structure\nThe repository is organized as follows:\n\n- `/src`: Contains Java classes and implementations for each design pattern.\n    - `creational`: Creational pattern implementations\n    - `structural`: Structural pattern implementations\n    - `behavioral`: Behavioral pattern implementations","funding_links":[],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjordanmarcelino%2Fjava-design-patterns","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fjordanmarcelino%2Fjava-design-patterns","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjordanmarcelino%2Fjava-design-patterns/lists"}