From 41ab86763ead26ce734cd2e337f11fea8e2af29c Mon Sep 17 00:00:00 2001 From: Narendra Pathai Date: Tue, 11 Aug 2015 11:58:02 +0530 Subject: [PATCH 1/5] Updated README for better navigational summary Links to various important sections of README is provided at the top so that it becomes easily navigable. --- README.md | 52 +++++++++++++++++++++++++++++++++++----------------- 1 file changed, 35 insertions(+), 17 deletions(-) diff --git a/README.md b/README.md index 85a7aa1bf..c902cbc85 100644 --- a/README.md +++ b/README.md @@ -1,13 +1,31 @@ # Design pattern samples in Java. -## Build status, coverage and static analysis: - ![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) Coverity Scan Build Status -## Introduction + - Introduction + - List of Design Patterns + - Creational Patterns + - Structural Patterns + - Behavioral Patterns + - Concurreny Patterns + - Presentation Tier Patterns + - Business Tier Patterns + - Architectural Patterns + - Integration Patterns + - Idioms + - Frequently Asked Questions + - How to contribute + - Contributing a new pattern + - Working on non-pattern issue + - Versioning + - Credits + - License + + +## Introduction Design patterns are formalized best practices that the programmer can use to solve common problems when designing an application or system. @@ -21,7 +39,7 @@ are familiar with the patterns. ## List of Design Patterns -### Creational Patterns +### Creational Patterns Creational design patterns abstract the instantiation process. They help make a 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. * [Multiton](#multiton) * [Object Pool](#object-pool) -### Structural Patterns +### Structural Patterns Structural patterns are concerned with how classes and objects are composed to form larger structures. @@ -52,7 +70,7 @@ form larger structures. * [Servant](#servant) * [Event Aggregator](#event-aggregator) -### Behavioral Patterns +### Behavioral Patterns Behavioral patterns are concerned with algorithms and the assignment of responsibilities between objects. @@ -73,7 +91,7 @@ responsibilities between objects. * [Specification](#specification) * [Dependency Injection](#dependency-injection) -### Concurrency Patterns +### Concurrency Patterns Concurrency patterns are those types of design patterns that deal with the multi-threaded programming paradigm. @@ -83,7 +101,7 @@ multi-threaded programming paradigm. * [Async Method Invocation](#async-method-invocation) * [Half-Sync/Half-Async](#half-sync-half-async) -### Presentation Tier Patterns +### Presentation Tier Patterns Presentation Tier patterns are the top-most level of the application, this is concerned with translating tasks and results to something the user can @@ -94,11 +112,11 @@ understand. * [Flux](#flux) * [Front Controller](#front-controller) -### Business Tier Patterns +### Business Tier Patterns * [Business Delegate](#business-delegate) -### Architectural Patterns +### Architectural Patterns An architectural pattern is a general, reusable solution to a commonly occurring problem in software architecture within a given context. @@ -108,14 +126,14 @@ problem in software architecture within a given context. * [Naked Objects](#naked-objects) * [Repository](#repository) -### Integration Patterns +### Integration Patterns Integration patterns are concerned with how software applications communicate and exchange data. * [Tolerant Reader](#tolerant-reader) -### Idioms +### Idioms A programming idiom is a means of expressing a recurring construct in one or more programming languages. Generally speaking, a programming idiom is an @@ -891,7 +909,7 @@ degrading execution efficiency. * [Real Time CORBA](http://www.omg.org/news/meetings/workshops/presentations/realtime2001/4-3_Pyarali_thread-pool.pdf) * [Android AsyncTask framework](http://developer.android.com/reference/android/os/AsyncTask.html) -# Frequently asked questions +# Frequently asked questions **Q: What is the difference between State and Strategy patterns?** @@ -951,7 +969,7 @@ Flyweight. -# How to contribute +# How to contribute **To work on a new pattern** you need to do the following steps: @@ -989,7 +1007,7 @@ Flyweight. should be added to the corresponding section of the `README.md`. -# Versioning +# Versioning Java-design-patterns project uses [semantic versioning](http://semver.org/) scheme. However, version numbers in this project do not signify binary releases @@ -997,7 +1015,7 @@ scheme. However, version numbers in this project do not signify binary releases other words, version numbers are used only for project planning sake. -# Credits +# Credits * [Design Patterns: Elements of Reusable Object-Oriented Software](http://www.amazon.com/Design-Patterns-Elements-Reusable-Object-Oriented/dp/0201633612) * [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. * [Marco Castigliego - Step Builder](http://rdafbn.blogspot.co.uk/2012/07/step-builder-pattern_28.html) -# License +# License This project is licensed under the terms of the MIT license. From 8e1d0a642ea3d79021c47b0bff2242e8a55318f3 Mon Sep 17 00:00:00 2001 From: Narendra Pathai Date: Tue, 11 Aug 2015 12:10:58 +0530 Subject: [PATCH 2/5] Added go to top links in various sections --- README.md | 33 +++++++++++++++++---------------- 1 file changed, 17 insertions(+), 16 deletions(-) diff --git a/README.md b/README.md index c902cbc85..98506f13f 100644 --- a/README.md +++ b/README.md @@ -5,12 +5,13 @@ src="https://scan.coverity.com/projects/5634/badge.svg"/> + - Introduction - List of Design Patterns - Creational Patterns - Structural Patterns - Behavioral Patterns - - Concurreny Patterns + - Concurrency Patterns - Presentation Tier Patterns - Business Tier Patterns - Architectural Patterns @@ -37,9 +38,9 @@ Reusing design patterns helps to prevent subtle issues that can cause major problems, and it also improves code readability for coders and architects who are familiar with the patterns. -## List of Design Patterns +## List of Design Patterns [↑](#top) -### Creational Patterns +### Creational Patterns [↑](#top) Creational design patterns abstract the instantiation process. They help make a system independent of how its objects are created, composed, and represented. @@ -54,7 +55,7 @@ system independent of how its objects are created, composed, and represented. * [Multiton](#multiton) * [Object Pool](#object-pool) -### Structural Patterns +### Structural Patterns [↑](#top) Structural patterns are concerned with how classes and objects are composed to form larger structures. @@ -70,7 +71,7 @@ form larger structures. * [Servant](#servant) * [Event Aggregator](#event-aggregator) -### Behavioral Patterns +### Behavioral Patterns [↑](#top) Behavioral patterns are concerned with algorithms and the assignment of responsibilities between objects. @@ -91,7 +92,7 @@ responsibilities between objects. * [Specification](#specification) * [Dependency Injection](#dependency-injection) -### Concurrency Patterns +### Concurrency Patterns [↑](#top) Concurrency patterns are those types of design patterns that deal with the multi-threaded programming paradigm. @@ -101,7 +102,7 @@ multi-threaded programming paradigm. * [Async Method Invocation](#async-method-invocation) * [Half-Sync/Half-Async](#half-sync-half-async) -### Presentation Tier Patterns +### Presentation Tier Patterns [↑](#top) Presentation Tier patterns are the top-most level of the application, this is concerned with translating tasks and results to something the user can @@ -112,11 +113,11 @@ understand. * [Flux](#flux) * [Front Controller](#front-controller) -### Business Tier Patterns +### Business Tier Patterns [↑](#top) * [Business Delegate](#business-delegate) -### Architectural Patterns +### Architectural Patterns [↑](#top) An architectural pattern is a general, reusable solution to a commonly occurring problem in software architecture within a given context. @@ -126,14 +127,14 @@ problem in software architecture within a given context. * [Naked Objects](#naked-objects) * [Repository](#repository) -### Integration Patterns +### Integration Patterns [↑](#top) Integration patterns are concerned with how software applications communicate and exchange data. * [Tolerant Reader](#tolerant-reader) -### Idioms +### Idioms [↑](#top) A programming idiom is a means of expressing a recurring construct in one or more programming languages. Generally speaking, a programming idiom is an @@ -909,7 +910,7 @@ degrading execution efficiency. * [Real Time CORBA](http://www.omg.org/news/meetings/workshops/presentations/realtime2001/4-3_Pyarali_thread-pool.pdf) * [Android AsyncTask framework](http://developer.android.com/reference/android/os/AsyncTask.html) -# Frequently asked questions +# Frequently asked questions [↑](#top) **Q: What is the difference between State and Strategy patterns?** @@ -969,7 +970,7 @@ Flyweight. -# How to contribute +# How to contribute [↑](#top) **To work on a new pattern** you need to do the following steps: @@ -1007,7 +1008,7 @@ Flyweight. should be added to the corresponding section of the `README.md`. -# Versioning +# Versioning [↑](#top) Java-design-patterns project uses [semantic versioning](http://semver.org/) scheme. However, version numbers in this project do not signify binary releases @@ -1015,7 +1016,7 @@ scheme. However, version numbers in this project do not signify binary releases other words, version numbers are used only for project planning sake. -# Credits +# Credits [↑](#top) * [Design Patterns: Elements of Reusable Object-Oriented Software](http://www.amazon.com/Design-Patterns-Elements-Reusable-Object-Oriented/dp/0201633612) * [Effective Java (2nd Edition)](http://www.amazon.com/Effective-Java-Edition-Joshua-Bloch/dp/0321356683) @@ -1038,6 +1039,6 @@ other words, version numbers are used only for project planning sake. * [Marco Castigliego - Step Builder](http://rdafbn.blogspot.co.uk/2012/07/step-builder-pattern_28.html) -# License +# License [↑](#top) This project is licensed under the terms of the MIT license. From 5d8ff14ffc95ca425d387b80e5db31012754f188 Mon Sep 17 00:00:00 2001 From: Narendra Pathai Date: Tue, 11 Aug 2015 12:16:51 +0530 Subject: [PATCH 3/5] Fixup --- README.md | 2 -- 1 file changed, 2 deletions(-) diff --git a/README.md b/README.md index 98506f13f..358dfa3f3 100644 --- a/README.md +++ b/README.md @@ -19,8 +19,6 @@ - Idioms - Frequently Asked Questions - How to contribute - - Contributing a new pattern - - Working on non-pattern issue - Versioning - Credits - License From 5ecb6ce152158b4c260d768c1a1d2463bb6af1a4 Mon Sep 17 00:00:00 2001 From: The Gitter Badger Date: Tue, 11 Aug 2015 19:33:28 +0000 Subject: [PATCH 4/5] Added Gitter badge --- README.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/README.md b/README.md index 358dfa3f3..b2b72a358 100644 --- a/README.md +++ b/README.md @@ -1,5 +1,7 @@ # Design pattern samples in Java. +[![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) + ![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) Coverity Scan Build Status From 9ca69c72a37c5fc9eb96acc276b30664e8c542b1 Mon Sep 17 00:00:00 2001 From: Narendra Pathai Date: Wed, 12 Aug 2015 11:33:49 +0530 Subject: [PATCH 5/5] Added reference to POSA and white paper of pattern in README --- README.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/README.md b/README.md index b2b72a358..dc43a2dc5 100644 --- a/README.md +++ b/README.md @@ -1037,6 +1037,8 @@ other words, version numbers are used only for project planning sake. * [Spring Data](http://www.amazon.com/Spring-Data-Mark-Pollack/dp/1449323952/ref=sr_1_1) * [J2EE Design Patterns](http://www.amazon.com/J2EE-Design-Patterns-William-Crawford/dp/0596004273/ref=sr_1_2) * [Marco Castigliego - Step Builder](http://rdafbn.blogspot.co.uk/2012/07/step-builder-pattern_28.html) +* [Douglas C. Schmidt and Charles D. Cranor - Half Sync/Half Async](http://www.cs.wustl.edu/~schmidt/PDF/PLoP-95.pdf) +* [Pattern Oriented Software Architecture Vol I-V](http://www.amazon.com/Pattern-Oriented-Software-Architecture-Volume-Patterns/dp/0471958697) # License [↑](#top)