59 lines
3.5 KiB
Markdown
59 lines
3.5 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 pattern samples in Java
|
|
|
|
[](https://travis-ci.org/iluwatar/java-design-patterns)
|
|
[](https://coveralls.io/r/iluwatar/java-design-patterns?branch=master)
|
|
[](https://gitter.im/iluwatar/java-design-patterns?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge&utm_content=badge)
|
|
|
|
# Introduction
|
|
|
|
Design patterns are formalized best practices that the 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 to prevent subtle issues that can cause major
|
|
problems, and it also improves code readability for coders and architects who
|
|
are familiar with the patterns.
|
|
|
|
# Getting started
|
|
|
|
Before you dive into the material, you should be familiar with various
|
|
[Programming/Software Design Principles](http://webpro.github.io/programming-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).
|
|
|
|
# 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).
|
|
|
|
# Credits
|
|
|
|
* [Effective Java (2nd Edition)](http://www.amazon.com/Effective-Java-Edition-Joshua-Bloch/dp/0321356683)
|
|
* [Java Generics and Collections](http://www.amazon.com/Java-Generics-Collections-Maurice-Naftalin/dp/0596527756/)
|
|
* [Let's Modify the Objects-First Approach into Design-Patterns-First](http://edu.pecinovsky.cz/papers/2006_ITiCSE_Design_Patterns_First.pdf)
|
|
* [Pattern Languages of Program Design](http://www.amazon.com/Pattern-Languages-Program-Design-Coplien/dp/0201607344/ref=sr_1_1)
|
|
* [Presentation Tier Patterns](http://www.javagyan.com/tutorials/corej2eepatterns/presentation-tier-patterns)
|
|
* [Functional Programming in Java: Harnessing the Power of Java 8 Lambda Expressions](http://www.amazon.com/Functional-Programming-Java-Harnessing-Expressions/dp/1937785467/ref=sr_1_1)
|
|
* [Patterns of Enterprise Application Architecture](http://www.amazon.com/Patterns-Enterprise-Application-Architecture-Martin/dp/0321127420)
|
|
* [Spring Data](http://www.amazon.com/Spring-Data-Mark-Pollack/dp/1449323952/ref=sr_1_1)
|
|
* [J2EE Design Patterns](http://www.amazon.com/J2EE-Design-Patterns-William-Crawford/dp/0596004273/ref=sr_1_2)
|
|
|
|
# License
|
|
|
|
This project is licensed under the terms of the MIT license.
|