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
1231Design patterns are formalized best practices that the programmer can use to
1332solve common problems when designing an application or system.
@@ -19,9 +38,9 @@ Reusing design patterns helps to prevent subtle issues that can cause major
1938problems, and it also improves code readability for coders and architects who
2039are 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
2645Creational design patterns abstract the instantiation process. They help make a
2746system 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
4160Structural patterns are concerned with how classes and objects are composed to
4261form 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
5776Behavioral patterns are concerned with algorithms and the assignment of
5877responsibilities 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
7897Concurrency patterns are those types of design patterns that deal with the
7998multi-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
88107Presentation Tier patterns are the top-most level of the application, this is
89108concerned 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
103122An architectural pattern is a general, reusable solution to a commonly occurring
104123problem 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
113132Integration patterns are concerned with how software applications communicate
114133and exchange data.
115134
116135* [ Tolerant Reader] ( #tolerant-reader )
117136
118- ### Idioms
137+ ### < a name = " idioms " > Idioms</ a > [ &# 8593 ; ] ( #top )
119138
120139A programming idiom is a means of expressing a recurring construct in one or
121140more 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.
9891008should be added to the corresponding section of the ` README.md ` .
9901009
9911010
992- # Versioning
1011+ # < a name = " versioning " > Versioning</ a > [ &# 8593 ; ] ( #top )
9931012
9941013Java-design-patterns project uses [ semantic versioning] ( http://semver.org/ )
9951014scheme. 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
9971016other 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
10251046This project is licensed under the terms of the MIT license.
0 commit comments