Skip to content

Commit 8f5b1b0

Browse files
committed
2 parents 67a99ec + d7ac32e commit 8f5b1b0

File tree

1 file changed

+38
-17
lines changed

1 file changed

+38
-17
lines changed

README.md

Lines changed: 38 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,32 @@
11
# Design pattern samples in Java.
22

3-
## Build status, coverage and static analysis:
3+
[![Join the chat at https://gitter.im/iluwatar/java-design-patterns](https://badges.gitter.im/Join%20Chat.svg)](https://gitter.im/iluwatar/java-design-patterns?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge&utm_content=badge)
44

55
![Build status](https://travis-ci.org/iluwatar/java-design-patterns.svg?branch=master) [![Coverage Status](https://coveralls.io/repos/iluwatar/java-design-patterns/badge.svg?branch=master)](https://coveralls.io/r/iluwatar/java-design-patterns?branch=master) <a href="https://scan.coverity.com/projects/5634">
66
<img alt="Coverity Scan Build Status"
77
src="https://scan.coverity.com/projects/5634/badge.svg"/>
88
</a>
99

10-
## Introduction
10+
<a name="top"/>
11+
- <a href="#introduction">Introduction</a>
12+
- <a href="#list-of-design-patterns">List of Design Patterns</a>
13+
- <a href="#creational-patterns">Creational Patterns</a>
14+
- <a href="#structural-patterns">Structural Patterns</a>
15+
- <a href="#behavioral-patterns">Behavioral Patterns</a>
16+
- <a href="#concurrency-patterns">Concurrency Patterns</a>
17+
- <a href="#presentation-tier-patterns">Presentation Tier Patterns</a>
18+
- <a href="#business-tier-patterns">Business Tier Patterns</a>
19+
- <a href="#architectural-patterns">Architectural Patterns</a>
20+
- <a href="#integration-patterns">Integration Patterns</a>
21+
- <a href="#idioms">Idioms</a>
22+
- <a href="#faq">Frequently Asked Questions</a>
23+
- <a href="#how-to-contribute">How to contribute</a>
24+
- <a href="#versioning">Versioning</a>
25+
- <a href="#credits">Credits</a>
26+
- <a href="#license">License</a>
27+
28+
29+
## <a name="introduction">Introduction</a>
1130

1231
Design patterns are formalized best practices that the programmer can use to
1332
solve common problems when designing an application or system.
@@ -19,9 +38,9 @@ Reusing design patterns helps to prevent subtle issues that can cause major
1938
problems, and it also improves code readability for coders and architects who
2039
are familiar with the patterns.
2140

22-
## <a name="list-of-design-patterns">List of Design Patterns</a>
41+
## <a name="list-of-design-patterns">List of Design Patterns</a> [&#8593;](#top)
2342

24-
### Creational Patterns
43+
### <a name="creational-patterns">Creational Patterns</a> [&#8593;](#top)
2544

2645
Creational design patterns abstract the instantiation process. They help make a
2746
system independent of how its objects are created, composed, and represented.
@@ -36,7 +55,7 @@ system independent of how its objects are created, composed, and represented.
3655
* [Multiton](#multiton)
3756
* [Object Pool](#object-pool)
3857

39-
### Structural Patterns
58+
### <a name="structural-patterns">Structural Patterns</a> [&#8593;](#top)
4059

4160
Structural patterns are concerned with how classes and objects are composed to
4261
form larger structures.
@@ -52,7 +71,7 @@ form larger structures.
5271
* [Servant](#servant)
5372
* [Event Aggregator](#event-aggregator)
5473

55-
### Behavioral Patterns
74+
### <a name="behavioral-patterns">Behavioral Patterns</a> [&#8593;](#top)
5675

5776
Behavioral patterns are concerned with algorithms and the assignment of
5877
responsibilities between objects.
@@ -73,7 +92,7 @@ responsibilities between objects.
7392
* [Specification](#specification)
7493
* [Dependency Injection](#dependency-injection)
7594

76-
### Concurrency Patterns
95+
### <a name="concurrency-patterns">Concurrency Patterns</a> [&#8593;](#top)
7796

7897
Concurrency patterns are those types of design patterns that deal with the
7998
multi-threaded programming paradigm.
@@ -83,7 +102,7 @@ multi-threaded programming paradigm.
83102
* [Async Method Invocation](#async-method-invocation)
84103
* [Half-Sync/Half-Async](#half-sync-half-async)
85104

86-
### Presentation Tier Patterns
105+
### <a name="presentation-tier-patterns">Presentation Tier Patterns</a> [&#8593;](#top)
87106

88107
Presentation Tier patterns are the top-most level of the application, this is
89108
concerned with translating tasks and results to something the user can
@@ -94,11 +113,11 @@ understand.
94113
* [Flux](#flux)
95114
* [Front Controller](#front-controller)
96115

97-
### Business Tier Patterns
116+
### <a name="business-tier-patterns">Business Tier Patterns</a> [&#8593;](#top)
98117

99118
* [Business Delegate](#business-delegate)
100119

101-
### Architectural Patterns
120+
### <a name="architectural-patterns">Architectural Patterns</a> [&#8593;](#top)
102121

103122
An architectural pattern is a general, reusable solution to a commonly occurring
104123
problem in software architecture within a given context.
@@ -108,14 +127,14 @@ problem in software architecture within a given context.
108127
* [Naked Objects](#naked-objects)
109128
* [Repository](#repository)
110129

111-
### Integration Patterns
130+
### <a name="integration-patterns">Integration Patterns</a> [&#8593;](#top)
112131

113132
Integration patterns are concerned with how software applications communicate
114133
and exchange data.
115134

116135
* [Tolerant Reader](#tolerant-reader)
117136

118-
### Idioms
137+
### <a name="idioms">Idioms</a> [&#8593;](#top)
119138

120139
A programming idiom is a means of expressing a recurring construct in one or
121140
more programming languages. Generally speaking, a programming idiom is an
@@ -891,7 +910,7 @@ degrading execution efficiency.
891910
* [Real Time CORBA](http://www.omg.org/news/meetings/workshops/presentations/realtime2001/4-3_Pyarali_thread-pool.pdf)
892911
* [Android AsyncTask framework](http://developer.android.com/reference/android/os/AsyncTask.html)
893912

894-
# Frequently asked questions
913+
# <a name="faq">Frequently asked questions</a> [&#8593;](#top)
895914

896915
**<a id="Q1">Q: What is the difference between State and Strategy patterns?</a>**
897916

@@ -951,7 +970,7 @@ Flyweight.
951970

952971

953972

954-
# How to contribute
973+
# <a name="how-to-contribute">How to contribute</a> [&#8593;](#top)
955974

956975
**To work on a new pattern** you need to do the following steps:
957976

@@ -989,15 +1008,15 @@ Flyweight.
9891008
should be added to the corresponding section of the `README.md`.
9901009

9911010

992-
# Versioning
1011+
# <a name="versioning">Versioning</a> [&#8593;](#top)
9931012

9941013
Java-design-patterns project uses [semantic versioning](http://semver.org/)
9951014
scheme. However, version numbers in this project do not signify binary releases
9961015
(since we don't make any) but rather milestones achieved on the roadmap. In
9971016
other words, version numbers are used only for project planning sake.
9981017

9991018

1000-
# Credits
1019+
# <a name="credits">Credits</a> [&#8593;](#top)
10011020

10021021
* [Design Patterns: Elements of Reusable Object-Oriented Software](http://www.amazon.com/Design-Patterns-Elements-Reusable-Object-Oriented/dp/0201633612)
10031022
* [Effective Java (2nd Edition)](http://www.amazon.com/Effective-Java-Edition-Joshua-Bloch/dp/0321356683)
@@ -1018,8 +1037,10 @@ other words, version numbers are used only for project planning sake.
10181037
* [Spring Data](http://www.amazon.com/Spring-Data-Mark-Pollack/dp/1449323952/ref=sr_1_1)
10191038
* [J2EE Design Patterns](http://www.amazon.com/J2EE-Design-Patterns-William-Crawford/dp/0596004273/ref=sr_1_2)
10201039
* [Marco Castigliego - Step Builder](http://rdafbn.blogspot.co.uk/2012/07/step-builder-pattern_28.html)
1040+
* [Douglas C. Schmidt and Charles D. Cranor - Half Sync/Half Async](http://www.cs.wustl.edu/~schmidt/PDF/PLoP-95.pdf)
1041+
* [Pattern Oriented Software Architecture Vol I-V](http://www.amazon.com/Pattern-Oriented-Software-Architecture-Volume-Patterns/dp/0471958697)
10211042

10221043

1023-
# License
1044+
# <a name="license">License</a> [&#8593;](#top)
10241045

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

0 commit comments

Comments
 (0)