{"id":13749154,"url":"https://github.com/ZoranPandovski/design-patterns","last_synced_at":"2025-05-09T12:30:39.225Z","repository":{"id":46300074,"uuid":"106878264","full_name":"ZoranPandovski/design-patterns","owner":"ZoranPandovski","description":":briefcase: Design patterns written in different programming languages :triangular_ruler:","archived":false,"fork":false,"pushed_at":"2024-12-13T10:41:38.000Z","size":1025,"stargazers_count":378,"open_issues_count":10,"forks_count":313,"subscribers_count":13,"default_branch":"master","last_synced_at":"2025-04-14T00:58:31.295Z","etag":null,"topics":["cpp","csharp","design-pattern","design-patterns","gang-of-four","good-practices","hacktoberfest","hacktoberfest2020","java","javascript","php","python"],"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/ZoranPandovski.png","metadata":{"files":{"readme":"readme.md","changelog":null,"contributing":"CONTRIBUTING.md","funding":null,"license":null,"code_of_conduct":"CODE_OF_CONDUCT.md","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":"2017-10-13T22:18:10.000Z","updated_at":"2025-03-25T07:47:27.000Z","dependencies_parsed_at":"2024-12-28T11:15:46.272Z","dependency_job_id":null,"html_url":"https://github.com/ZoranPandovski/design-patterns","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/ZoranPandovski%2Fdesign-patterns","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ZoranPandovski%2Fdesign-patterns/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ZoranPandovski%2Fdesign-patterns/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ZoranPandovski%2Fdesign-patterns/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/ZoranPandovski","download_url":"https://codeload.github.com/ZoranPandovski/design-patterns/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":253251084,"owners_count":21878406,"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":["cpp","csharp","design-pattern","design-patterns","gang-of-four","good-practices","hacktoberfest","hacktoberfest2020","java","javascript","php","python"],"created_at":"2024-08-03T07:00:56.189Z","updated_at":"2025-05-09T12:30:38.724Z","avatar_url":"https://github.com/ZoranPandovski.png","language":"Java","readme":"\u003ch1 align=\"center\"\u003e\n \t\u003cimg width=\"400\" src=\"media/design-patterns.jpeg\" alt=\"Design patterns\"\u003e\n \t\u003cbr\u003e\n \t\u003cbr\u003e\n \u003c/h1\u003e\n\n[![BCH compliance](https://bettercodehub.com/edge/badge/ZoranPandovski/design-patterns?branch=master)](https://bettercodehub.com/)\n[![Say Thanks!](https://img.shields.io/badge/Say%20Thanks-!-1EAEDB.svg)](https://saythanks.io/to/ZoranPandovski)\n[![Open Source Love](https://badges.frapsoft.com/os/v2/open-source.svg?v=103)](https://github.com/ZoranPandovski)\n[![contributions welcome](https://img.shields.io/badge/contributions-welcome-brightgreen.svg?style=flat)](https://github.com/ZoranPandovski/design-patterns/issues)\n\n\n# Design patterns  [![Tweet](https://img.shields.io/twitter/url/http/shields.io.svg?style=social)](https://twitter.com/intent/tweet?text=Design%20Patterns\u0026url=https://github.com/ZoranPandovski/design-patterns\u0026via=design-patterns\u0026hashtags=design,design-patterns,python,java,c,cpp,php,javascript)\n\n\nIn software engineering, a software design pattern is a general reusable solution to a commonly occurring problem within a given context in software design. It is not a finished design that can be transformed directly into source or machine code. It is a description or template used to know how to solve a problem that can be used in many different situations. Design patterns are formalized best practices that a programmer can use to solve common problems while designing an application or system.\nDesign patterns may be viewed as a structured approach to computer programming intermediate between the levels of a programming paradigm and a concrete algorithm.\n\n## List of implementations\n\n* [Behavioral](Behavioral)\n  * [Callback](Behavioral/Callback)\n  * [Chain Of Responsibility](Behavioral/ChainOfResponsability)\n  * [Command](Behavioral/Command)\n  * [Delegation](Behavioral/Delegation)\n  * [Iterator](Behavioral/Iterator)\n  * [Null Object](Behavioral/NullObject)\n  * [Observer](Behavioral/Observer)\n  * [State](Behavioral/State)\n  * [Strategy](Behavioral/Strategy)\n  * [Template Method](Behavioral/TemplateMethod)\n  * [Visitor](Behavioral/Visitor)\n  * [Interpreter](Behavioral/Interpreter)\n  * [Mediator](Behavioral/Mediator)\n* [Concurrency](Concurrency)\n  * [Active Object](Concurrency/Active%20Object)\n  * [Balking Pattern](Concurrency/Balking%20Pattern)\n  * [Concurrent Server](Concurrency/Concurrent%20Server)\n  * [Fan Out](Concurrency/Fan%20Out)\n  * [Guarded Suspension](Concurrency/Guarded%20Suspension)\n  * [Mutext](Concurrency/Mutex)\n  * [Semaphores](Concurrency/Semaphores)\n  * [Observer](Concurrency/Observer)\n  * [Thread Pool](Concurrency/ThreadPool)\n* [Creational](Creational)\n  * [Abstract Factory](Creational/Abstract%20Factory)\n  * [Builder](Creational/Builder)\n  * [Dependency Injection](Creational/Dependency%20Injection)\n  * [Factory](Creational/Factory)\n  * [Lazy Initialization](Creational/LazyInitialization)\n  * [Method Chaining](Creational/Method%20Chaining)\n  * [Prototype](Creational/Prototype)\n  * [Singleton](Creational/Singleton)\n  * [Value Object](Creational/Value%20Object)\n* [Structural](Structural)\n  * [Adapter](Structural/Adapter)\n  * [Bridge](Structural/Bridge)\n  * [Builder](Structural/Builder)\n  * [Composite](Structural/Composite)\n  * [Decorator](Structural/Decorator)\n  * [Filter](Structural/Filter)\n  * [Flyweight](Structural/Flyweight)\n  * [Facade](Structural/Facade)\n  * [Repository](Structural/Repository)\n  * [PrivateClass](Structural/PrivateClass)\n  * [Proxy](Structural/Proxy)\n  * [TransactionalStack](Structural/TransactionalStack)\n\n## Contribution\n * Contributions are always welcome. Language doesn't matter. Just make sure you're implementing design pattern.\n * PRs are welcome. To begin developing, follow the structure:\n\n   \u003e category/design pattern name/language-name/file_name.extension\n\n   e.g\n\n   \u003e Creational/Abstract factory/python/abstract_factory.py\n * Don't forget to add README with explanation how pattern works, when to use and common usage of the pattern.\n * Adding image with UML diagram for design pattern would be very helpful.\n\n## Resources\n\n Curated list of resources dealing with design patterns.\n\n * Books\n   * [Head First Design Patterns 2nd Edition](https://www.amazon.com/Head-First-Design-Patterns-Object-Oriented/dp/149207800X) [[Python](https://github.com/rebuild-123/Python-Head-First-Design-Patterns)] [[Java](https://github.com/bethrobson/Head-First-Design-Patterns)]\n   * [Elements of Reusable Object-Oriented Software](https://www.amazon.com/gp/product/0201633612/ref=as_li_qf_sp_asin_il_tl?ie=UTF8\u0026camp=1789\u0026creative=9325\u0026creativeASIN=0201633612\u0026linkCode=as2\u0026tag=anjabl-20)\n   * [Design Patterns Explained: A New Perspective on Object Oriented Design](https://www.amazon.com/dp/0321247140/?tag=myga0ba-20)\n   * [Patterns of Enterprise Application Architecture](https://www.amazon.com/dp/0321127420/?tag=myga0ba-20)\n * Free e-books\n   * [Design Pattern in C++](http://www.uml.org.cn/c++/pdf/DesignPatterns.pdf)\n   * [Design Pattern in Javascript](http://sd.blackball.lv/library/Mastering_JavaScript_Design_Patterns_(2014).pdf)\n * Sites\n   * [Design patterns](http://www.oodesign.com/)\n   * [Geeks for geeks design patterns](http://www.geeksforgeeks.org/software-design-patterns/)\n   * [Source making Design patterns](https://sourcemaking.com/design_patterns)\n   * [Java Desgin Pattens Example tutorial](https://www.journaldev.com/1827/java-design-patterns-example-tutorial)\n   * [Learn about Design Patterns](https://www.scaler.com/topics/design-patterns/)\n   * [Design Patterns - refactoring.guru](https://refactoring.guru/design-patterns)\n * Online classes (Free)\n   * [Design Patterns - Coursera](https://www.coursera.org/courses?query=design%20patterns)\n   * [Hackr.io list ](https://hackr.io/tutorials/learn-software-design-patterns)\n\n ## License\n\n[![CC0](http://mirrors.creativecommons.org/presskit/buttons/88x31/svg/cc-zero.svg)](https://creativecommons.org/publicdomain/zero/1.0/)\n\nTo the extent possible under law, [Zoran Pandovski](https://github.com/ZoranPandovski/) has waived all copyright and related or neighboring rights to this work.\n","funding_links":[],"categories":["Repositories Coding for Beginners"],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2FZoranPandovski%2Fdesign-patterns","html_url":"https://awesome.ecosyste.ms/projects/github.com%2FZoranPandovski%2Fdesign-patterns","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2FZoranPandovski%2Fdesign-patterns/lists"}