{"id":17028449,"url":"https://github.com/gazbert/java-design-patterns","last_synced_at":"2025-04-12T12:10:39.870Z","repository":{"id":44001300,"uuid":"17316825","full_name":"gazbert/java-design-patterns","owner":"gazbert","description":"A cookbook of simple Java design patterns.","archived":false,"fork":false,"pushed_at":"2024-05-02T20:13:49.000Z","size":1901,"stargazers_count":60,"open_issues_count":1,"forks_count":39,"subscribers_count":6,"default_branch":"master","last_synced_at":"2025-03-26T06:51:08.803Z","etag":null,"topics":["cookbook","design-patterns","gof","java","java-design-patterns"],"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/gazbert.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}},"created_at":"2014-03-01T14:45:47.000Z","updated_at":"2025-03-02T17:29:08.000Z","dependencies_parsed_at":"2022-08-31T15:01:14.044Z","dependency_job_id":null,"html_url":"https://github.com/gazbert/java-design-patterns","commit_stats":null,"previous_names":[],"tags_count":6,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/gazbert%2Fjava-design-patterns","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/gazbert%2Fjava-design-patterns/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/gazbert%2Fjava-design-patterns/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/gazbert%2Fjava-design-patterns/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/gazbert","download_url":"https://codeload.github.com/gazbert/java-design-patterns/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":248565074,"owners_count":21125417,"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":["cookbook","design-patterns","gof","java","java-design-patterns"],"created_at":"2024-10-14T07:54:25.002Z","updated_at":"2025-04-12T12:10:39.852Z","avatar_url":"https://github.com/gazbert.png","language":"Java","readme":"# Java Design Patterns\n\n[![Gradle CI](https://github.com/gazbert/java-design-patterns/actions/workflows/gradle.yml/badge.svg?branch=master)](https://github.com/gazbert/java-design-patterns/actions/workflows/gradle.yml) \n[![Maven CI](https://github.com/gazbert/java-design-patterns/actions/workflows/maven.yml/badge.svg?branch=master)](https://github.com/gazbert/java-design-patterns/actions/workflows/maven.yml)\n\nA cookbook of commonly used Java design patterns based on examples from: \n\n* \"Design Patterns: Elements of Reusable Object-Oriented Software\" - Gamma et al\n* \"Head First Design Patterns\" - Freeman et al\n* \"Java Design Pattern Essentials\" - Tony Brevis\n\nEach pattern is contained in its own package. The Javadoc will provide more details and the unit tests \nwill demonstrate how to use it.\n\nAny comments/bugs/better ways of doing things, send 'em my way.\n\n## Design Patterns\n\n### Behavioural\n\n1. State\n1. Chain of Responsibility\n1. Strategy\n1. Observer\n1. Command\n1. Template Method\n1. Visitor\n\n### Creational\n\n1. Builder\n1. Factory Method\n1. Static Factory Method / Simple Factory Method\n1. Abstract Factory\n1. Singleton\n\n### Structural\n\n1. Adapter\n1. Decorator\n1. Facade\n\n## Build Guide\nYou'll need JDK 21+ installed on your dev box.\n\n### Gradle\nYou can use the included Gradle wrapper to build the project and pull down the dependencies:\n\n```bash\n./gradlew build\n```\n\nThe Javadoc can be found in the `\u003cproject-root\u003e/build/docs/javadoc` folder after you execute the build.\n\n### Maven\nYou can use the included Maven wrapper to build the project and pull down the dependencies:\n\n```bash\n./mvnw clean install\n```\n\nThe Javadoc can be found in the `\u003cproject-root\u003e/target/apidocs` folder after you execute the build.\n\n## Contributing\nIssues and new features are managed using the project [Issue Tracker](https://github.com/gazbert/java-design-patterns/issues) -\nsubmit bugs here.\n\nYou are welcome to take on new features or fix bugs! See [here](CONTRIBUTING.md) for how to get involved.\n","funding_links":[],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fgazbert%2Fjava-design-patterns","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fgazbert%2Fjava-design-patterns","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fgazbert%2Fjava-design-patterns/lists"}