Skip to content
Design patterns implemented in Java
Java Other
  1. Java 99.0%
  2. Other 1.0%
Branch: master
Clone or download
anuragagarwal561994 and iluwatar Java 11 migrate 7 remaining f (#1115)
* Moves facade to Java 11

* Moves factory-kit to Java 11

* Moves factory-method to Java 11

* Moves feature-toggle to Java 11

* Moves fluentinterface to Java 11

* Moves flux to Java 11

* Moves flyweight to Java 11

* Moves front-controller to Java 11

* Uses stream properly

* Resolves issues with ci
Latest commit 670c4e4 Dec 22, 2019
Permalink
Type Name Latest commit message Commit time
Failed to load latest commit information.
.github Create FUNDING.yml Oct 26, 2019
abstract-document iluwatar/java-design-patterns-web#8 Update pattern categories and tags Dec 13, 2019
abstract-factory iluwatar/java-design-patterns-web#8 Fix typo in tag Dec 13, 2019
acyclic-visitor iluwatar/java-design-patterns-web#8 Update pattern categories and tags Dec 13, 2019
adapter iluwatar/java-design-patterns-web#8 Fix typo in tag Dec 13, 2019
aggregator-microservices iluwatar/java-design-patterns-web#8 Update pattern categories and tags Dec 13, 2019
ambassador iluwatar/java-design-patterns-web#8 Update pattern categories and tags Dec 13, 2019
api-gateway iluwatar/java-design-patterns-web#8 Update pattern categories and tags Dec 13, 2019
async-method-invocation iluwatar/java-design-patterns-web#8 Update pattern categories and tags Dec 13, 2019
balking Issue 989 batch-2 (#1108) Dec 18, 2019
bridge Issue 989 batch-2 (#1108) Dec 18, 2019
builder Issue 989 batch-2 (#1108) Dec 18, 2019
business-delegate Issue 989 batch-2 (#1108) Dec 18, 2019
bytecode Issue 989 batch-2 (#1108) Dec 18, 2019
caching Issue 989 batch-2 (#1108) Dec 18, 2019
callback Issue 989 batch-2 (#1108) Dec 18, 2019
chain Issue 989 batch-2 (#1108) Dec 18, 2019
circuit-breaker Issue 989 batch-2 (#1108) Dec 18, 2019
collection-pipeline Issue 989 batch-2 (#1108) Dec 18, 2019
combinator iluwatar/java-design-patterns-web#8 Update pattern categories and tags Dec 13, 2019
command Issue 989 batch-2 (#1108) Dec 18, 2019
commander Issue 989 batch-2 (#1108) Dec 18, 2019
composite Issue 989 batch-2 (#1108) Dec 18, 2019
converter Issue 989 batch-2 (#1108) Dec 18, 2019
cqrs Issue 989 batch-2 (#1108) Dec 18, 2019
dao Issue 989 batch-2 (#1108) Dec 18, 2019
data-bus Issue 989 batch-2 (#1108) Dec 18, 2019
data-locality Issue 989 batch-2 (#1108) Dec 18, 2019
data-mapper Issue 989 batch-2 (#1108) Dec 18, 2019
data-transfer-object Issue 989 batch-2 (#1108) Dec 18, 2019
decorator Issue 989 batch-2 (#1108) Dec 18, 2019
delegation Issue 989 batch-2 (#1108) Dec 18, 2019
dependency-injection Issue 989 batch-2 (#1108) Dec 18, 2019
dirty-flag Issue 989 batch-2 (#1108) Dec 18, 2019
double-buffer Issue 989 batch-2 (#1108) Dec 18, 2019
double-checked-locking Issue 989 batch-2 (#1108) Dec 18, 2019
double-dispatch Issue 989 batch-2 (#1108) Dec 18, 2019
eip-aggregator Issue 989 batch-2 (#1108) Dec 18, 2019
eip-message-channel Issue 989 batch-2 (#1108) Dec 18, 2019
eip-publish-subscribe Issue 989 batch-2 (#1108) Dec 18, 2019
eip-splitter Issue 989 batch-2 (#1108) Dec 18, 2019
eip-wire-tap Issue 989 batch-2 (#1108) Dec 18, 2019
etc #1113 Add uml-reverse-mapper plugin Dec 7, 2019
event-aggregator Issue 989 batch-2 (#1108) Dec 18, 2019
event-asynchronous Issue 989 batch-2 (#1108) Dec 18, 2019
event-driven-architecture Issue 989 batch-2 (#1108) Dec 18, 2019
event-queue Issue 989 batch-2 (#1108) Dec 18, 2019
event-sourcing Issue 989 batch-2 (#1108) Dec 18, 2019
execute-around Issue 989 batch-2 (#1108) Dec 18, 2019
extension-objects Issue 989 batch-2 (#1108) Dec 18, 2019
facade Java 11 migrate 7 remaining f (#1115) Dec 22, 2019
factory-kit Java 11 migrate 7 remaining f (#1115) Dec 22, 2019
factory-method Java 11 migrate 7 remaining f (#1115) Dec 22, 2019
feature-toggle Java 11 migrate 7 remaining f (#1115) Dec 22, 2019
fluentinterface Java 11 migrate 7 remaining f (#1115) Dec 22, 2019
flux Java 11 migrate 7 remaining f (#1115) Dec 22, 2019
flyweight Java 11 migrate 7 remaining f (#1115) Dec 22, 2019
front-controller Java 11 migrate 7 remaining f (#1115) Dec 22, 2019
game-loop Java 11 migrate remaining (g,h,i) (#1116) Dec 20, 2019
guarded-suspension Java 11 migrate remaining (g,h,i) (#1116) Dec 20, 2019
half-sync-half-async Java 11 migrate remaining (g,h,i) (#1116) Dec 20, 2019
hexagonal Java 11 migrate remaining (g,h,i) (#1116) Dec 20, 2019
intercepting-filter Java 11 migrate remaining (g,h,i) (#1116) Dec 20, 2019
interpreter Java 11 migrate remaining (g,h,i) (#1116) Dec 20, 2019
iterator Java 11 migrate remaining (g,h,i) (#1116) Dec 20, 2019
layers Issue 989 batch-2 (#1108) Dec 18, 2019
lazy-loading Issue 989 batch-2 (#1108) Dec 18, 2019
leader-election Issue 989 batch-2 (#1108) Dec 18, 2019
marker Issue 989 batch-2 (#1108) Dec 18, 2019
master-worker-pattern Issue 989 batch-2 (#1108) Dec 18, 2019
mediator Issue 989 batch-2 (#1108) Dec 18, 2019
memento Issue 989 batch-2 (#1108) Dec 18, 2019
model-view-controller Issue 989 batch-2 (#1108) Dec 18, 2019
model-view-presenter Issue 989 batch-2 (#1108) Dec 18, 2019
module Issue 989 batch-2 (#1108) Dec 18, 2019
monad Issue 989 batch-2 (#1108) Dec 18, 2019
monostate iluwatar/java-design-patterns-web#8 Update pattern categories and tags Dec 13, 2019
multiton Issue 989 batch-2 (#1108) Dec 18, 2019
mute-idiom Issue 989 batch-2 (#1108) Dec 18, 2019
mutex Issue 989 batch-2 (#1108) Dec 18, 2019
naked-objects iluwatar/java-design-patterns-web#8 Update pattern categories and tags Dec 13, 2019
null-object Issue 989 batch-2 (#1108) Dec 18, 2019
object-mother iluwatar/java-design-patterns-web#8 Update pattern categories and tags Dec 13, 2019
object-pool Issue 989 batch-2 (#1108) Dec 18, 2019
observer Issue 989 batch-2 (#1108) Dec 18, 2019
page-object Issue 989 batch-2 (#1108) Dec 18, 2019
partial-response Issue 989 batch-2 (#1108) Dec 18, 2019
pipeline Issue 989 batch-2 (#1108) Dec 18, 2019
poison-pill Issue 989 batch-2 (#1108) Dec 18, 2019
priority-queue Issue 989 batch-2 (#1108) Dec 18, 2019
private-class-data Issue 989 batch-2 (#1108) Dec 18, 2019
producer-consumer Issue 989 batch-2 (#1108) Dec 18, 2019
promise Issue 989 batch-2 (#1108) Dec 18, 2019
property Issue 989 batch-2 (#1108) Dec 18, 2019
prototype Issue 989 batch-2 (#1108) Dec 18, 2019
proxy Issue 989 batch-2 (#1108) Dec 18, 2019
queue-load-leveling Issue 989 batch-2 (#1108) Dec 18, 2019
reactor iluwatar/java-design-patterns-web#8 Update pattern categories and tags Dec 13, 2019
reader-writer-lock iluwatar/java-design-patterns-web#8 Update pattern categories and tags Dec 13, 2019
repository iluwatar/java-design-patterns-web#8 Update pattern categories and tags Dec 13, 2019
resource-acquisition-is-initialization iluwatar/java-design-patterns-web#8 Update pattern categories and tags Dec 13, 2019
retry iluwatar/java-design-patterns-web#8 Update pattern categories and tags Dec 13, 2019
role-object iluwatar/java-design-patterns-web#8 Update pattern categories and tags Dec 13, 2019
saga iluwatar/java-design-patterns-web#8 Update pattern categories and tags Dec 13, 2019
semaphore iluwatar/java-design-patterns-web#8 Update pattern categories and tags Dec 13, 2019
servant iluwatar/java-design-patterns-web#8 Update pattern categories and tags Dec 13, 2019
serverless iluwatar/java-design-patterns-web#8 Update pattern categories and tags Dec 13, 2019
service-layer iluwatar/java-design-patterns-web#8 Update pattern categories and tags Dec 13, 2019
service-locator iluwatar/java-design-patterns-web#8 Update pattern categories and tags Dec 13, 2019
sharding iluwatar/java-design-patterns-web#8 Update pattern categories and tags Dec 13, 2019
singleton iluwatar/java-design-patterns-web#8 Fix typo in tag Dec 13, 2019
spatial-partition iluwatar/java-design-patterns-web#8 Update pattern categories and tags Dec 13, 2019
specification iluwatar/java-design-patterns-web#8 Update pattern categories and tags Dec 13, 2019
state iluwatar/java-design-patterns-web#8 Fix typo in tag Dec 13, 2019
step-builder iluwatar/java-design-patterns-web#8 Update pattern categories and tags Dec 13, 2019
strategy iluwatar/java-design-patterns-web#8 Fix typo in tag Dec 13, 2019
subclass-sandbox iluwatar/java-design-patterns-web#8 Update pattern categories and tags Dec 13, 2019
template-method iluwatar/java-design-patterns-web#8 Fix typo in tag Dec 13, 2019
thread-pool iluwatar/java-design-patterns-web#8 Update pattern categories and tags Dec 13, 2019
throttling iluwatar/java-design-patterns-web#8 Update pattern categories and tags Dec 13, 2019
tls iluwatar/java-design-patterns-web#8 Update pattern categories and tags Dec 13, 2019
tolerant-reader iluwatar/java-design-patterns-web#8 Update pattern categories and tags Dec 13, 2019
trampoline iluwatar/java-design-patterns-web#8 Update pattern categories and tags Dec 13, 2019
twin iluwatar/java-design-patterns-web#8 Update pattern categories and tags Dec 13, 2019
typeobjectpattern iluwatar/java-design-patterns-web#8 Update pattern categories and tags Dec 13, 2019
unit-of-work iluwatar/java-design-patterns-web#8 Update pattern categories and tags Dec 13, 2019
update-method iluwatar/java-design-patterns-web#8 Update pattern categories and tags Dec 13, 2019
value-object iluwatar/java-design-patterns-web#8 Update pattern categories and tags Dec 13, 2019
visitor iluwatar/java-design-patterns-web#8 Fix typo in tag Dec 13, 2019
.gitignore #970 single logging framework should be enforced (#982) Oct 13, 2019
.travis.yml Update web site logic Oct 29, 2019
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 improve grammar of README (#945) Oct 20, 2019
checkstyle-suppressions.xml Update license headers Oct 12, 2019
license-plugin-header-style.xml #1021: Fix checkstyle warnings by changing the license header template ( Oct 22, 2019
pom.xml #1113 Add uml-reverse-mapper plugin Dec 7, 2019
update-website.sh Update script Oct 30, 2019

README.md

Design patterns implemented in Java

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

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 that cause major problems, and it also improves code readability for coders and architects who are familiar with the patterns.

Getting started

This site showcases Java Design Patterns. The solutions have been developed by experienced programmers and architects from the open source community. The patterns can be browsed by their high level descriptions or by looking at their source code. The source code examples are well commented and can be thought as programming tutorials how to implement a specific pattern. We use the most popular battle-proven open source Java technologies.

Before you dive into the material, you should be familiar with various 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.

Hopefully you find the object oriented solutions presented on this site useful in your architectures and have as much fun learning them as we had developing them.

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.