60 lines
3.1 KiB
Markdown
60 lines
3.1 KiB
Markdown
<!-- the line below needs to be an empty line C: (its because kramdown isnt
|
|
that smart and dearly wants an empty line before a heading to be able to
|
|
display it as such, e.g. website) -->
|
|
|
|
# Design patterns implemented in Java
|
|
|
|

|
|
[](https://raw.githubusercontent.com/iluwatar/java-design-patterns/master/LICENSE.md)
|
|
[](https://gitter.im/iluwatar/java-design-patterns?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge&utm_content=badge)
|
|
[](https://sonarcloud.io/dashboard?id=iluwatar_java-design-patterns)
|
|
|
|
# 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 help 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 as
|
|
programming tutorials 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
|
|
patterns by any of the following approaches
|
|
|
|
- Using difficulty tags, `Difficulty-Beginner`, `Difficulty-Intermediate` & `Difficulty-Expert`.
|
|
- Using pattern categories, `Creational`, `Behavioral`, and others.
|
|
- Search for a specific pattern. Can't find one? Please report a new pattern [here](https://github.com/iluwatar/java-design-patterns/issues).
|
|
|
|
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 developing them.
|
|
|
|
# How to contribute
|
|
|
|
If you are willing to contribute to the project you will find the relevant information in
|
|
our [developer wiki](https://github.com/iluwatar/java-design-patterns/wiki). We will help
|
|
you and answer your questions in the [Gitter chatroom](https://gitter.im/iluwatar/java-design-patterns).
|
|
|
|
# License
|
|
|
|
This project is licensed under the terms of the MIT license.
|