java-design-patterns README

The project's README from github.com/iluwatar/java-design-patterns. As one markdown file: README.md.

Design Patterns Implemented in Java

Java CI License MIT Lines of Code Coverage Join the chat at https://gitter.im/iluwatar/java-design-patterns

All Contributors


Read in different language : zh, zh-TW ,ko, fr, tr, ar, es, pt, id, ru, de, ja, vi, bn, np, it, da

Introduction

Design patterns are the best, formalized practices a programmer can use to solve common problems when designing an application or system.

Design patterns can speed up the development process by providing tested, proven development paradigms.

Reusing design patterns helps prevent subtle issues that cause major problems, and it also improves code readability for coders and architects who are familiar with the patterns.

Getting Started

This site showcases Java Design Patterns. The solutions have been developed by experienced programmers and architects from the open-source community. The patterns can be browsed by their high-level descriptions or by looking at their source code. The source code examples are well commented and can be thought of as programming tutorials on how to implement a specific pattern. We use the most popular battle-proven open-source Java technologies.

Before you dive into the material, you should be familiar with various Software Design Principles.

All designs should be as simple as possible. You should start with KISS, YAGNI, and Do The Simplest Thing That Could Possibly Work principles. Complexity and patterns should only be introduced when they are needed for practical extensibility.

Once you are familiar with these concepts you can start drilling down into the available design patterns by any of the following approaches:

Hopefully, you find the object-oriented solutions presented on this site useful in your architectures and have as much fun learning them as we had while developing them.

How to Contribute

If you are willing to contribute to the project you will find the relevant information in our developer wiki. We will help you and answer your questions in the Gitter chatroom.

The Book

The design patterns are now available as an e-book. Find out more about "Open Source Java Design Patterns" here: https://payhip.com/b/bNQFX

The project contributors can get the book for free. Contact the maintainer via Gitter chatroom or email (iluwatar (at) gmail (dot) com ). Send a message that contains your email address, Github username, and a link to an accepted pull request.

License

This project is licensed under the terms of the MIT license.

Supporters

SerpApi logo

SerpApi

SerpApi is the world’s leading provider of search data, pioneering APIs that turn search engine results into structured, developer-ready information.

Contributors

Ilkka Seppälä
Ilkka Seppälä

📆 🚧 🖋
Subhrodip Mohanta
Subhrodip Mohanta

💻 👀 🚧
amit1307
amit1307

💻
Narendra Pathai
Narendra Pathai

💻 🤔 👀
Jeroen Meulemeester
Jeroen Meulemeester

💻
Joseph McCarthy
Joseph McCarthy

💻
Thomas
Thomas

💻
Anurag Agarwal
Anurag Agarwal

💻
Markus Moser
Markus Moser

🎨 💻 🤔
Sabiq Ihab
Sabiq Ihab

💻
Amit Dixit
Amit Dixit

💻
Piyush Kailash Chaudhari
Piyush Kailash Chaudhari

💻
joshzambales
joshzambales

💻
Kamil Pietruszka
Kamil Pietruszka

💻
Zafar Khaydarov
Zafar Khaydarov

💻 📖
Paul Campbell
Paul Campbell

💻
Argyro Sioziou
Argyro Sioziou

💻
TylerMcConville
TylerMcConville

💻
saksham93
saksham93

💻
nikhilbarar
nikhilbarar

💻
Colin But
Colin But

💻
Ruslan
Ruslan

💻
Juho Kang
Juho Kang

💻
Dheeraj Mummareddy
Dheeraj Mummareddy

💻
Bernardo Sulzbach
Bernardo Sulzbach

💻
Aleksandar Dudukovic
Aleksandar Dudukovic

💻
Yusuf Aytaş
Yusuf Aytaş

💻
Mihály Kuprivecz
Mihály Kuprivecz

💻
Stanislav Kapinus
Stanislav Kapinus

💻
GVSharma
GVSharma

💻
Srđan Paunović
Srđan Paunović

💻
Petros G. Sideris
Petros G. Sideris

💻
Pramod Gupta
Pramod Gupta

👀
Amarnath Chandana
Amarnath Chandana

💻
Anurag870
Anurag870

💻 📖
Wes Gilleland
Wes Gilleland

💻
Harshraj Thakor
Harshraj Thakor

💻

java-design-patterns (iluwatar/java-design-patterns)

snippets
Searching Database…

What is this?A collection of Java implementations for classic software design patterns (Creational, Structural, Behavioral and more), each shown as a well-commented, runnable code example.
Is this a library I import, or a reference catalog to read?It is a reference catalog/collection of standalone example projects, not a library you add as a dependency.
How do I navigate it — browse by name, tag, or category?You can search for a specific pattern by name, browse by tags like Performance or Gang of Four, or browse by category such as Creational and Behavioral.
Do I need to know Java well before diving in?Yes, it's aimed at Java developers who should also understand basic software design principles like KISS and YAGNI first.
Is there a build system or test setup for the examples?Not stated explicitly beyond Maven-based CI, but the repo uses Maven workflows to build and validate the example modules.
Is there a book version of this content?Yes, an e-book called 'Open Source Java Design Patterns' is available, and project contributors can get it for free by contacting the maintainer via Gitter or email.
Is it available in languages other than English?Yes, the README is translated into many languages including Chinese, Korean, French, Turkish, Arabic, Spanish, Portuguese, Russian, German, Japanese, Vietnamese and more.
How can I suggest a pattern that is missing?You can report a new pattern request through the link provided in the README's pattern-search section.
Is this still actively maintained?Yes, it participates in Hacktoberfest and has active CI workflows for Maven builds, PR checks, and stale-issue management.
Creator
iluwatar
Size
47.6 MB
Stars
94.8K
Updated
CommitSep 13
Age
12y
Commits · 90 Days