1
1
# Design pattern samples in Java.
2
2
3
- ## Build status, coverage and static analysis:
4
-
5
3
![ 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 " >
6
4
<img alt="Coverity Scan Build Status"
7
5
src="https://scan.coverity.com/projects/5634/badge.svg"/>
8
6
</a >
9
7
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 >
11
29
12
30
Design patterns are formalized best practices that the programmer can use to
13
31
solve common problems when designing an application or system.
@@ -21,7 +39,7 @@ are familiar with the patterns.
21
39
22
40
## <a name =" list-of-design-patterns " >List of Design Patterns</a >
23
41
24
- ### Creational Patterns
42
+ ### < a name = " creational-patterns " > Creational Patterns</ a >
25
43
26
44
Creational design patterns abstract the instantiation process. They help make a
27
45
system 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.
36
54
* [ Multiton] ( #multiton )
37
55
* [ Object Pool] ( #object-pool )
38
56
39
- ### Structural Patterns
57
+ ### < a name = " structural-patterns " > Structural Patterns</ a >
40
58
41
59
Structural patterns are concerned with how classes and objects are composed to
42
60
form larger structures.
@@ -52,7 +70,7 @@ form larger structures.
52
70
* [ Servant] ( #servant )
53
71
* [ Event Aggregator] ( #event-aggregator )
54
72
55
- ### Behavioral Patterns
73
+ ### < a name = " behavioral-patterns " > Behavioral Patterns</ a >
56
74
57
75
Behavioral patterns are concerned with algorithms and the assignment of
58
76
responsibilities between objects.
@@ -73,7 +91,7 @@ responsibilities between objects.
73
91
* [ Specification] ( #specification )
74
92
* [ Dependency Injection] ( #dependency-injection )
75
93
76
- ### Concurrency Patterns
94
+ ### < a name = " concurrency-patterns " > Concurrency Patterns</ a >
77
95
78
96
Concurrency patterns are those types of design patterns that deal with the
79
97
multi-threaded programming paradigm.
@@ -83,7 +101,7 @@ multi-threaded programming paradigm.
83
101
* [ Async Method Invocation] ( #async-method-invocation )
84
102
* [ Half-Sync/Half-Async] ( #half-sync-half-async )
85
103
86
- ### Presentation Tier Patterns
104
+ ### < a name = " presentation-tier-patterns " > Presentation Tier Patterns</ a >
87
105
88
106
Presentation Tier patterns are the top-most level of the application, this is
89
107
concerned with translating tasks and results to something the user can
@@ -94,11 +112,11 @@ understand.
94
112
* [ Flux] ( #flux )
95
113
* [ Front Controller] ( #front-controller )
96
114
97
- ### Business Tier Patterns
115
+ ### < a name = " business-tier-patterns " > Business Tier Patterns</ a >
98
116
99
117
* [ Business Delegate] ( #business-delegate )
100
118
101
- ### Architectural Patterns
119
+ ### < a name = " architectural-patterns " > Architectural Patterns</ a >
102
120
103
121
An architectural pattern is a general, reusable solution to a commonly occurring
104
122
problem in software architecture within a given context.
@@ -108,14 +126,14 @@ problem in software architecture within a given context.
108
126
* [ Naked Objects] ( #naked-objects )
109
127
* [ Repository] ( #repository )
110
128
111
- ### Integration Patterns
129
+ ### < a name = " integration-patterns " > Integration Patterns</ a >
112
130
113
131
Integration patterns are concerned with how software applications communicate
114
132
and exchange data.
115
133
116
134
* [ Tolerant Reader] ( #tolerant-reader )
117
135
118
- ### Idioms
136
+ ### < a name = " idioms " > Idioms</ a >
119
137
120
138
A programming idiom is a means of expressing a recurring construct in one or
121
139
more programming languages. Generally speaking, a programming idiom is an
@@ -891,7 +909,7 @@ degrading execution efficiency.
891
909
* [ Real Time CORBA] ( http://www.omg.org/news/meetings/workshops/presentations/realtime2001/4-3_Pyarali_thread-pool.pdf )
892
910
* [ Android AsyncTask framework] ( http://developer.android.com/reference/android/os/AsyncTask.html )
893
911
894
- # Frequently asked questions
912
+ # < a name = " faq " > Frequently asked questions</ a >
895
913
896
914
** <a id =" Q1 " >Q: What is the difference between State and Strategy patterns?</a >**
897
915
@@ -951,7 +969,7 @@ Flyweight.
951
969
952
970
953
971
954
- # How to contribute
972
+ # < a name = " how-to-contribute " > How to contribute</ a >
955
973
956
974
** To work on a new pattern** you need to do the following steps:
957
975
@@ -989,15 +1007,15 @@ Flyweight.
989
1007
should be added to the corresponding section of the ` README.md ` .
990
1008
991
1009
992
- # Versioning
1010
+ # < a name = " versioning " > Versioning</ a >
993
1011
994
1012
Java-design-patterns project uses [ semantic versioning] ( http://semver.org/ )
995
1013
scheme. However, version numbers in this project do not signify binary releases
996
1014
(since we don't make any) but rather milestones achieved on the roadmap. In
997
1015
other words, version numbers are used only for project planning sake.
998
1016
999
1017
1000
- # Credits
1018
+ # < a name = " credits " > Credits</ a >
1001
1019
1002
1020
* [ Design Patterns: Elements of Reusable Object-Oriented Software] ( http://www.amazon.com/Design-Patterns-Elements-Reusable-Object-Oriented/dp/0201633612 )
1003
1021
* [ 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.
1020
1038
* [ Marco Castigliego - Step Builder] ( http://rdafbn.blogspot.co.uk/2012/07/step-builder-pattern_28.html )
1021
1039
1022
1040
1023
- # License
1041
+ # < a name = " license " > License</ a >
1024
1042
1025
1043
This project is licensed under the terms of the MIT license.
0 commit comments