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 name =" top " />
9+ - <a href =" #introduction " >Introduction</a >
10+ - <a href =" #list-of-design-patterns " >List of Design Patterns</a >
11+ - <a href =" #creational-patterns " >Creational Patterns</a >
12+ - <a href =" #structural-patterns " >Structural Patterns</a >
13+ - <a href =" #behavioral-patterns " >Behavioral Patterns</a >
14+ - <a href =" #concurrency-patterns " >Concurrency Patterns</a >
15+ - <a href =" #presentation-tier-patterns " >Presentation Tier Patterns</a >
16+ - <a href =" #business-tier-patterns " >Business Tier Patterns</a >
17+ - <a href =" #architectural-patterns " >Architectural Patterns</a >
18+ - <a href =" #integration-patterns " >Integration Patterns</a >
19+ - <a href =" #idioms " >Idioms</a >
20+ - <a href =" #faq " >Frequently Asked Questions</a >
21+ - <a href =" #how-to-contribute " >How to contribute</a >
22+ - <a href =" #versioning " >Versioning</a >
23+ - <a href =" #credits " >Credits</a >
24+ - <a href =" #license " >License</a >
25+
26+
27+ ## <a name =" introduction " >Introduction</a >
1128
1229Design patterns are formalized best practices that the programmer can use to
1330solve common problems when designing an application or system.
@@ -19,9 +36,9 @@ Reusing design patterns helps to prevent subtle issues that can cause major
1936problems, and it also improves code readability for coders and architects who
2037are familiar with the patterns.
2138
22- ## <a name =" list-of-design-patterns " >List of Design Patterns</a >
39+ ## <a name =" list-of-design-patterns " >List of Design Patterns</a > [ &# 8593 ; ] ( #top )
2340
24- ### Creational Patterns
41+ ### < a name = " creational-patterns " > Creational Patterns</ a > [ &# 8593 ; ] ( #top )
2542
2643Creational design patterns abstract the instantiation process. They help make a
2744system independent of how its objects are created, composed, and represented.
@@ -36,7 +53,7 @@ system independent of how its objects are created, composed, and represented.
3653* [ Multiton] ( #multiton )
3754* [ Object Pool] ( #object-pool )
3855
39- ### Structural Patterns
56+ ### < a name = " structural-patterns " > Structural Patterns</ a > [ &# 8593 ; ] ( #top )
4057
4158Structural patterns are concerned with how classes and objects are composed to
4259form larger structures.
@@ -52,7 +69,7 @@ form larger structures.
5269* [ Servant] ( #servant )
5370* [ Event Aggregator] ( #event-aggregator )
5471
55- ### Behavioral Patterns
72+ ### < a name = " behavioral-patterns " > Behavioral Patterns</ a > [ &# 8593 ; ] ( #top )
5673
5774Behavioral patterns are concerned with algorithms and the assignment of
5875responsibilities between objects.
@@ -73,7 +90,7 @@ responsibilities between objects.
7390* [ Specification] ( #specification )
7491* [ Dependency Injection] ( #dependency-injection )
7592
76- ### Concurrency Patterns
93+ ### < a name = " concurrency-patterns " > Concurrency Patterns</ a > [ &# 8593 ; ] ( #top )
7794
7895Concurrency patterns are those types of design patterns that deal with the
7996multi-threaded programming paradigm.
@@ -83,7 +100,7 @@ multi-threaded programming paradigm.
83100* [ Async Method Invocation] ( #async-method-invocation )
84101* [ Half-Sync/Half-Async] ( #half-sync-half-async )
85102
86- ### Presentation Tier Patterns
103+ ### < a name = " presentation-tier-patterns " > Presentation Tier Patterns</ a > [ &# 8593 ; ] ( #top )
87104
88105Presentation Tier patterns are the top-most level of the application, this is
89106concerned with translating tasks and results to something the user can
@@ -94,11 +111,11 @@ understand.
94111* [ Flux] ( #flux )
95112* [ Front Controller] ( #front-controller )
96113
97- ### Business Tier Patterns
114+ ### < a name = " business-tier-patterns " > Business Tier Patterns</ a > [ &# 8593 ; ] ( #top )
98115
99116* [ Business Delegate] ( #business-delegate )
100117
101- ### Architectural Patterns
118+ ### < a name = " architectural-patterns " > Architectural Patterns</ a > [ &# 8593 ; ] ( #top )
102119
103120An architectural pattern is a general, reusable solution to a commonly occurring
104121problem in software architecture within a given context.
@@ -108,14 +125,14 @@ problem in software architecture within a given context.
108125* [ Naked Objects] ( #naked-objects )
109126* [ Repository] ( #repository )
110127
111- ### Integration Patterns
128+ ### < a name = " integration-patterns " > Integration Patterns</ a > [ &# 8593 ; ] ( #top )
112129
113130Integration patterns are concerned with how software applications communicate
114131and exchange data.
115132
116133* [ Tolerant Reader] ( #tolerant-reader )
117134
118- ### Idioms
135+ ### < a name = " idioms " > Idioms</ a > [ &# 8593 ; ] ( #top )
119136
120137A programming idiom is a means of expressing a recurring construct in one or
121138more programming languages. Generally speaking, a programming idiom is an
@@ -891,7 +908,7 @@ degrading execution efficiency.
891908* [ Real Time CORBA] ( http://www.omg.org/news/meetings/workshops/presentations/realtime2001/4-3_Pyarali_thread-pool.pdf )
892909* [ Android AsyncTask framework] ( http://developer.android.com/reference/android/os/AsyncTask.html )
893910
894- # Frequently asked questions
911+ # < a name = " faq " > Frequently asked questions</ a > [ &# 8593 ; ] ( #top )
895912
896913** <a id =" Q1 " >Q: What is the difference between State and Strategy patterns?</a >**
897914
@@ -951,7 +968,7 @@ Flyweight.
951968
952969
953970
954- # How to contribute
971+ # < a name = " how-to-contribute " > How to contribute</ a > [ &# 8593 ; ] ( #top )
955972
956973** To work on a new pattern** you need to do the following steps:
957974
@@ -989,15 +1006,15 @@ Flyweight.
9891006should be added to the corresponding section of the ` README.md ` .
9901007
9911008
992- # Versioning
1009+ # < a name = " versioning " > Versioning</ a > [ &# 8593 ; ] ( #top )
9931010
9941011Java-design-patterns project uses [ semantic versioning] ( http://semver.org/ )
9951012scheme. However, version numbers in this project do not signify binary releases
9961013(since we don't make any) but rather milestones achieved on the roadmap. In
9971014other words, version numbers are used only for project planning sake.
9981015
9991016
1000- # Credits
1017+ # < a name = " credits " > Credits</ a > [ &# 8593 ; ] ( #top )
10011018
10021019* [ Design Patterns: Elements of Reusable Object-Oriented Software] ( http://www.amazon.com/Design-Patterns-Elements-Reusable-Object-Oriented/dp/0201633612 )
10031020* [ Effective Java (2nd Edition)] ( http://www.amazon.com/Effective-Java-Edition-Joshua-Bloch/dp/0321356683 )
@@ -1020,6 +1037,6 @@ other words, version numbers are used only for project planning sake.
10201037* [ Marco Castigliego - Step Builder] ( http://rdafbn.blogspot.co.uk/2012/07/step-builder-pattern_28.html )
10211038
10221039
1023- # License
1040+ # < a name = " license " > License</ a > [ &# 8593 ; ] ( #top )
10241041
10251042This project is licensed under the terms of the MIT license.
0 commit comments