11# Design pattern samples in Java.
22
3- ## Build status, coverage and static analysis:
4-
53![ 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 " >
64 <img alt="Coverity Scan Build Status"
75 src="https://scan.coverity.com/projects/5634/badge.svg"/>
86</a >
97
10- ## Introduction
8+ - <a href =" #introduction " >Introduction</a >
9+ - <a href =" #list-of-design-patterns " >List of Design Patterns</a >
10+ - <a href =" #creational-patterns " >Creational Patterns</a >
11+ - <a href =" #structural-patterns " >Structural Patterns</a >
12+ - <a href =" #behavioral-patterns " >Behavioral Patterns</a >
13+ - <a href =" #concurrency-patterns " >Concurreny Patterns</a >
14+ - <a href =" #presentation-tier-patterns " >Presentation Tier Patterns</a >
15+ - <a href =" #business-tier-patterns " >Business Tier Patterns</a >
16+ - <a href =" #architectural-patterns " >Architectural Patterns</a >
17+ - <a href =" #integration-patterns " >Integration Patterns</a >
18+ - <a href =" #idioms " >Idioms</a >
19+ - <a href =" #faq " >Frequently Asked Questions</a >
20+ - <a href =" #how-to-contribute " >How to contribute</a >
21+ - Contributing a new pattern
22+ - Working on non-pattern issue
23+ - <a href =" #versioning " >Versioning</a >
24+ - <a href =" #credits " >Credits</a >
25+ - <a href =" #license " >License</a >
26+
27+
28+ ## <a name =" introduction " >Introduction</a >
1129
1230Design patterns are formalized best practices that the programmer can use to
1331solve common problems when designing an application or system.
@@ -21,7 +39,7 @@ are familiar with the patterns.
2139
2240## <a name =" list-of-design-patterns " >List of Design Patterns</a >
2341
24- ### Creational Patterns
42+ ### < a name = " creational-patterns " > Creational Patterns</ a >
2543
2644Creational design patterns abstract the instantiation process. They help make a
2745system independent of how its objects are created, composed, and represented.
@@ -36,7 +54,7 @@ system independent of how its objects are created, composed, and represented.
3654* [ Multiton] ( #multiton )
3755* [ Object Pool] ( #object-pool )
3856
39- ### Structural Patterns
57+ ### < a name = " structural-patterns " > Structural Patterns</ a >
4058
4159Structural patterns are concerned with how classes and objects are composed to
4260form larger structures.
@@ -52,7 +70,7 @@ form larger structures.
5270* [ Servant] ( #servant )
5371* [ Event Aggregator] ( #event-aggregator )
5472
55- ### Behavioral Patterns
73+ ### < a name = " behavioral-patterns " > Behavioral Patterns</ a >
5674
5775Behavioral patterns are concerned with algorithms and the assignment of
5876responsibilities between objects.
@@ -73,7 +91,7 @@ responsibilities between objects.
7391* [ Specification] ( #specification )
7492* [ Dependency Injection] ( #dependency-injection )
7593
76- ### Concurrency Patterns
94+ ### < a name = " concurrency-patterns " > Concurrency Patterns</ a >
7795
7896Concurrency patterns are those types of design patterns that deal with the
7997multi-threaded programming paradigm.
@@ -83,7 +101,7 @@ multi-threaded programming paradigm.
83101* [ Async Method Invocation] ( #async-method-invocation )
84102* [ Half-Sync/Half-Async] ( #half-sync-half-async )
85103
86- ### Presentation Tier Patterns
104+ ### < a name = " presentation-tier-patterns " > Presentation Tier Patterns</ a >
87105
88106Presentation Tier patterns are the top-most level of the application, this is
89107concerned with translating tasks and results to something the user can
@@ -94,11 +112,11 @@ understand.
94112* [ Flux] ( #flux )
95113* [ Front Controller] ( #front-controller )
96114
97- ### Business Tier Patterns
115+ ### < a name = " business-tier-patterns " > Business Tier Patterns</ a >
98116
99117* [ Business Delegate] ( #business-delegate )
100118
101- ### Architectural Patterns
119+ ### < a name = " architectural-patterns " > Architectural Patterns</ a >
102120
103121An architectural pattern is a general, reusable solution to a commonly occurring
104122problem in software architecture within a given context.
@@ -108,14 +126,14 @@ problem in software architecture within a given context.
108126* [ Naked Objects] ( #naked-objects )
109127* [ Repository] ( #repository )
110128
111- ### Integration Patterns
129+ ### < a name = " integration-patterns " > Integration Patterns</ a >
112130
113131Integration patterns are concerned with how software applications communicate
114132and exchange data.
115133
116134* [ Tolerant Reader] ( #tolerant-reader )
117135
118- ### Idioms
136+ ### < a name = " idioms " > Idioms</ a >
119137
120138A programming idiom is a means of expressing a recurring construct in one or
121139more programming languages. Generally speaking, a programming idiom is an
@@ -891,7 +909,7 @@ degrading execution efficiency.
891909* [ Real Time CORBA] ( http://www.omg.org/news/meetings/workshops/presentations/realtime2001/4-3_Pyarali_thread-pool.pdf )
892910* [ Android AsyncTask framework] ( http://developer.android.com/reference/android/os/AsyncTask.html )
893911
894- # Frequently asked questions
912+ # < a name = " faq " > Frequently asked questions</ a >
895913
896914** <a id =" Q1 " >Q: What is the difference between State and Strategy patterns?</a >**
897915
@@ -951,7 +969,7 @@ Flyweight.
951969
952970
953971
954- # How to contribute
972+ # < a name = " how-to-contribute " > How to contribute</ a >
955973
956974** To work on a new pattern** you need to do the following steps:
957975
@@ -989,15 +1007,15 @@ Flyweight.
9891007should be added to the corresponding section of the ` README.md ` .
9901008
9911009
992- # Versioning
1010+ # < a name = " versioning " > Versioning</ a >
9931011
9941012Java-design-patterns project uses [ semantic versioning] ( http://semver.org/ )
9951013scheme. However, version numbers in this project do not signify binary releases
9961014(since we don't make any) but rather milestones achieved on the roadmap. In
9971015other words, version numbers are used only for project planning sake.
9981016
9991017
1000- # Credits
1018+ # < a name = " credits " > Credits</ a >
10011019
10021020* [ Design Patterns: Elements of Reusable Object-Oriented Software] ( http://www.amazon.com/Design-Patterns-Elements-Reusable-Object-Oriented/dp/0201633612 )
10031021* [ Effective Java (2nd Edition)] ( http://www.amazon.com/Effective-Java-Edition-Joshua-Bloch/dp/0321356683 )
@@ -1020,6 +1038,6 @@ other words, version numbers are used only for project planning sake.
10201038* [ Marco Castigliego - Step Builder] ( http://rdafbn.blogspot.co.uk/2012/07/step-builder-pattern_28.html )
10211039
10221040
1023- # License
1041+ # < a name = " license " > License</ a >
10241042
10251043This project is licensed under the terms of the MIT license.
0 commit comments