Skip to content
Design patterns implemented in Java
Branch: master
Clone or download
saritchie and iluwatar Minor ReadMe Update (#864)
Two sentences read a little awkward, so I tweaked them. Hope this helps!
Latest commit fedc2d9 Apr 7, 2019
Permalink
Type Name Latest commit message Commit time
Failed to load latest commit information.
abstract-document Minor refactorings and code style changes (#807) Oct 23, 2018
abstract-factory Fix script blocking (#843) Feb 4, 2019
acyclic-visitor Minor refactorings and code style changes (#807) Oct 23, 2018
adapter Set version for next development iteration Sep 30, 2018
aggregator-microservices Minor refactorings and code style changes (#807) Oct 23, 2018
ambassador Add missing license headers Nov 3, 2018
api-gateway Set version for next development iteration Sep 30, 2018
async-method-invocation Set version for next development iteration Sep 30, 2018
balking Add missing license headers Nov 3, 2018
bridge Minor refactorings and code style changes (#807) Oct 23, 2018
builder Set version for next development iteration Sep 30, 2018
business-delegate Set version for next development iteration Sep 30, 2018
caching Set version for next development iteration Sep 30, 2018
callback Minor refactorings and code style changes (#807) Oct 23, 2018
chain Minor refactorings and code style changes (#807) Oct 23, 2018
collection-pipeline Minor refactorings and code style changes (#807) Oct 23, 2018
command Fix script blocking (#843) Feb 4, 2019
composite Set version for next development iteration Sep 30, 2018
converter Minor refactorings and code style changes (#807) Oct 23, 2018
cqrs Minor refactorings and code style changes (#807) Oct 23, 2018
dao Minor refactorings and code style changes (#807) Oct 23, 2018
data-bus Set version for next development iteration Sep 30, 2018
data-mapper Minor refactorings and code style changes (#807) Oct 23, 2018
data-transfer-object Minor refactorings and code style changes (#807) Oct 23, 2018
decorator - Assign ClubberTroll to another variable in README Oct 15, 2018
delegation Minor refactorings and code style changes (#807) Oct 23, 2018
dependency-injection Set version for next development iteration Sep 30, 2018
dirty-flag Minor refactorings and code style changes (#807) Oct 23, 2018
double-checked-locking Set version for next development iteration Sep 30, 2018
double-dispatch Set version for next development iteration Sep 30, 2018
eip-aggregator Minor refactorings and code style changes (#807) Oct 23, 2018
eip-message-channel Minor refactorings and code style changes (#807) Oct 23, 2018
eip-publish-subscribe Minor refactorings and code style changes (#807) Oct 23, 2018
eip-splitter Set version for next development iteration Sep 30, 2018
eip-wire-tap Set version for next development iteration Sep 30, 2018
event-aggregator Minor refactorings and code style changes (#807) Oct 23, 2018
event-asynchronous Minor refactorings and code style changes (#807) Oct 23, 2018
event-driven-architecture Set version for next development iteration Sep 30, 2018
event-queue Refactored Event Queue (#806) Oct 21, 2018
event-sourcing Minor refactorings and code style changes (#807) Oct 23, 2018
execute-around Minor refactorings and code style changes (#807) Oct 23, 2018
extension-objects Minor refactorings and code style changes (#807) Oct 23, 2018
facade removed unnecessary static modifier on enum definition (#853) Feb 15, 2019
factory-kit Minor refactorings and code style changes (#807) Oct 23, 2018
factory-method Fix script blocking (#843) Feb 4, 2019
feature-toggle Minor refactorings and code style changes (#807) Oct 23, 2018
fluentinterface Minor refactorings and code style changes (#807) Oct 23, 2018
flux Set version for next development iteration Sep 30, 2018
flyweight Set version for next development iteration Sep 30, 2018
front-controller Minor refactorings and code style changes (#807) Oct 23, 2018
guarded-suspension Minor refactorings and code style changes (#807) Oct 23, 2018
half-sync-half-async Minor refactorings and code style changes (#807) Oct 23, 2018
hexagonal Hexagonal pattern fixes (#814) Oct 27, 2018
intercepting-filter Update Readme.md (#815) Nov 4, 2018
interpreter Set version for next development iteration Sep 30, 2018
iterator Minor refactorings and code style changes (#807) Oct 23, 2018
layers Minor refactorings and code style changes (#807) Oct 23, 2018
lazy-loading Minor refactorings and code style changes (#807) Oct 23, 2018
marker Set version for next development iteration Sep 30, 2018
master-worker-pattern Update license headers Feb 13, 2019
mediator Set version for next development iteration Sep 30, 2018
memento Set version for next development iteration Sep 30, 2018
model-view-controller Set version for next development iteration Sep 30, 2018
model-view-presenter Set version for next development iteration Sep 30, 2018
module No Need declare App class as a utility class (#827) Nov 25, 2018
monad Set version for next development iteration Sep 30, 2018
monostate Minor refactorings and code style changes (#807) Oct 23, 2018
multiton Set version for next development iteration Sep 30, 2018
mute-idiom Minor refactorings and code style changes (#807) Oct 23, 2018
mutex Set version for next development iteration Sep 30, 2018
naked-objects Fix blocker issues on Sonar #508 (#810) Oct 25, 2018
null-object Minor refactorings and code style changes (#807) Oct 23, 2018
object-mother Minor refactorings and code style changes (#807) Oct 23, 2018
object-pool Minor refactorings and code style changes (#807) Oct 23, 2018
observer Minor refactorings and code style changes (#807) Oct 23, 2018
page-object Refactor Page-object pattern (#812) Oct 24, 2018
partial-response Set version for next development iteration Sep 30, 2018
poison-pill Minor refactorings and code style changes (#807) Oct 23, 2018
private-class-data Set version for next development iteration Sep 30, 2018
producer-consumer Minor refactorings and code style changes (#807) Oct 23, 2018
promise Minor refactorings and code style changes (#807) Oct 23, 2018
property Minor refactorings and code style changes (#807) Oct 23, 2018
prototype Minor refactorings and code style changes (#807) Oct 23, 2018
proxy Set version for next development iteration Sep 30, 2018
queue-load-leveling Minor refactorings and code style changes (#807) Oct 23, 2018
reactor Set version for next development iteration Sep 30, 2018
reader-writer-lock Set version for next development iteration Sep 30, 2018
repository Minor refactorings and code style changes (#807) Oct 23, 2018
resource-acquisition-is-initialization Set version for next development iteration Sep 30, 2018
retry Retry exponential backoff #775 (#829) Feb 4, 2019
semaphore Minor refactorings and code style changes (#807) Oct 23, 2018
servant Minor refactorings and code style changes (#807) Oct 23, 2018
serverless Minor refactorings and code style changes (#807) Oct 23, 2018
service-layer Minor refactorings and code style changes (#807) Oct 23, 2018
service-locator Set version for next development iteration Sep 30, 2018
singleton Set version for next development iteration Sep 30, 2018
spatial-partition 845 : unnecassary return deleted (#856) Feb 16, 2019
specification Minor refactorings and code style changes (#807) Oct 23, 2018
state Set version for next development iteration Sep 30, 2018
step-builder Set version for next development iteration Sep 30, 2018
strategy Remove redundant Exception from throws list in DragonSlayerTest Oct 15, 2018
template-method Set version for next development iteration Sep 30, 2018
thread-pool Set version for next development iteration Sep 30, 2018
throttling Resolves #643, test cases failed due to global state in CallsCount (#803 Oct 21, 2018
tls Minor refactorings and code style changes (#807) Oct 23, 2018
tolerant-reader Minor refactorings and code style changes (#807) Oct 23, 2018
trampoline Minor refactorings and code style changes (#807) Oct 23, 2018
twin Minor refactorings and code style changes (#807) Oct 23, 2018
unit-of-work Minor refactorings and code style changes (#807) Oct 23, 2018
value-object Set version for next development iteration Sep 30, 2018
visitor Minor refactorings and code style changes (#807) Oct 23, 2018
.gitignore Update .gitignore Sep 3, 2017
.travis.yml #674 update SonarQube analysis URL Jan 7, 2018
CODE_COVERAGE.md Fix typo (#832) Dec 17, 2018
CONTRIBUTING.MD Update CONTRIBUTING.MD Dec 28, 2015
LICENSE.md Update license year from 2014 to range '2014-2016' Feb 3, 2016
PULL_REQUEST_TEMPLATE.md Update PULL_REQUEST_TEMPLATE.md Dec 9, 2017
README.md Minor ReadMe Update (#864) Apr 7, 2019
checkstyle-suppressions.xml Update license headers Nov 27, 2016
checkstyle.xml Migrate to JUnit5 Dec 31, 2017
exclude-pmd.properties Update license headers Nov 27, 2016
faq.md 756 : faq added (#855) Feb 15, 2019
pom.xml Master worker pattern #799 (#831) Feb 13, 2019
update-ghpages.sh Update license headers Nov 27, 2016

README.md

Design patterns implemented in Java

Build status License MIT Join the chat at https://gitter.im/iluwatar/java-design-patterns Quality Gate

Introduction

Design patterns are the best formalized practices a programmer can use to solve common problems when designing an application or system.

Design patterns can speed up the development process by providing tested, proven development paradigms.

Reusing design patterns help prevent subtle issues which cause major problems, and it also improves code readability for coders and architects who are familiar with the patterns.

Getting started

Before you dive into the material, you should be familiar with various Programming/Software Design Principles.

All designs should be as simple as possible. You should start with KISS, YAGNI, and Do The Simplest Thing That Could Possibly Work principles. Complexity and patterns should only be introduced when they are needed for practical extensibility.

Once you are familiar with these concepts you can start drilling down into patterns by any of the following approaches

  • Using difficulty tags, Difficulty-Beginner, Difficulty-Intermediate & Difficulty-Expert.
  • Using pattern categories, Creational, Behavioral and others.
  • Search for a specific pattern. Can't find one? Please report a new pattern here.

How to contribute

If you are willing to contribute to the project you will find the relevant information in our developer wiki. We will help you and answer your questions in the Gitter chatroom.

License

This project is licensed under the terms of the MIT license.

You can’t perform that action at this time.