Compare commits

...

56 Commits

Author SHA1 Message Date
5a9f1b017e Merge branch 'master' into java9 2018-03-24 17:19:59 +02:00
6879990857 Merge pull request #726 from valery1707/patch-1
Update SonarCloud badge
2018-03-24 16:24:05 +02:00
855cf75dd6 Merge pull request #729 from S177LM/patch-1
Fixed typo
2018-03-22 17:38:32 +02:00
ecad864703 Fixed typo
Just fixed a little repetition in the javadoc comment.
2018-03-20 19:51:04 +01:00
69be74c016 Update SonarCloud badge
Update link into badge URL as described in https://about.sonarcloud.io/news/2018/02/05/new-project-badges.html
2018-03-14 20:20:15 +03:00
c723289bbb Merge pull request #723 from Juaanma/patch-1
Captain is implementing RowingBoat - Adapter pattern
2018-03-11 21:59:13 +02:00
477da92e2f Merge pull request #724 from anthonycampbell/master
My solution to issue #602.
2018-03-11 21:23:32 +02:00
ac57d67f45 solution to issue #602. Implemented multiton with enum, added example to app.java, a test for the enum, and commented my code 2018-03-08 16:08:09 -08:00
960d2ea6f7 solution to issue #602. Implemented multiton with enum, added example to app.java, a test for the enum, and commented my code 2018-03-08 15:52:35 -08:00
87cb33f69b Fixed tests 2018-03-07 17:43:03 -03:00
915a1f3eb0 Forgot to delete row's @Override
My bad, sorry. It should compile now.
2018-03-07 17:26:39 -03:00
c8fd0bc23d Merge pull request #716 from baislsl/javadoc-fix
Improve Javadoc
2018-03-07 21:52:50 +02:00
696ed86aff Captain is implementing RowingBoat - Adapter pattern
Captain and RowingBoat aren't interchangable. 
Captain, as a client, may have a method to use the boat, but it isn't needed that they share the same interface, as it makes the code more confusing.
2018-03-07 00:19:33 -03:00
e0b8f6f850 fix checkstyle 2018-03-06 16:09:22 +08:00
e01d640499 Merge pull request #713 from baislsl/master
Use the @TestInstance annotation
2018-02-25 08:54:00 +02:00
7fef5e4cd5 Merge pull request #696 from besok/master
#677 add pattern Trampoline.
2018-02-25 08:45:36 +02:00
991ba320a6 Improve Javadoc 2018-02-19 22:01:14 +08:00
d78434fed8 Merge pull request #644 from spanhal1/master
added tutorial links to bridge, decorator, abstract-factory, strategy…
2018-02-17 20:39:52 +02:00
f9f93695fe Merge pull request #609 from igorcadelima/master
Protect against instantiation via reflection
2018-02-17 20:36:40 +02:00
a367832d9e Merge pull request #711 from ryanguest/master
Fix typo
2018-02-17 20:26:26 +02:00
36f5947cd7 Use the @TestInstance annotation 2018-02-08 03:00:55 +08:00
f62ae456b0 Fix typo 2018-02-01 15:44:23 -08:00
5cbf651a3e Merge branch 'master' into master 2018-01-28 14:44:19 -05:00
e7b119c95c Merge pull request #709 from mookkiah/issue_508_prototype
issue 508 - using copy constructor to implement prototype.
2018-01-28 10:44:25 +02:00
ec28b1250d Merge pull request #708 from BeeHuang/fix-comment
Fix error comment with isServiceRunnign in Event Queue
2018-01-28 10:29:19 +02:00
2dcf63c646 fixed typo in abstract factory pattern 2018-01-27 20:30:15 -05:00
0805716515 issue 508 - using copy constructor to implement prototype.
As per http://www.artima.com/intv/bloch13.html, clone method in java is
broken or confusing. So staying away from clone method.
2018-01-27 09:57:15 -05:00
9f797b3009 fix error comment with isServiceRunnign 2018-01-27 16:44:23 +08:00
33a3d6fef4 Merge pull request #702 from zafarella/patch-4
Add thread safety comment on enum based singleton
2018-01-23 23:24:39 +02:00
dddfb52c70 Update EnumIvoryTower.java 2018-01-23 00:07:11 -05:00
9667878b5f add junit - jupiter -engine 2018-01-20 22:09:42 +03:00
4c4cbd41cf fix checkstyle errors 2018-01-20 21:42:14 +03:00
f7825f6c99 changes fixing mistakes 2018-01-20 13:36:43 +03:00
8960ef6111 Merge pull request #698 from olcbean/redundant_super
Remove redundant explicit super() constructor calls #694
2018-01-16 21:22:20 +02:00
a82000650d Remove redundant explicit super() constructor calls #694 2018-01-15 19:33:55 +01:00
e9021329e1 Merge pull request #697 from james-a-roland/issue_694
Removing all redundant super constructor calls, issue 694.
2018-01-13 22:25:31 +02:00
e9a541259b Removing all redundant super constructor calls 2018-01-10 21:20:37 -08:00
94fdefee3a add code 2018-01-08 14:45:38 +03:00
b61b64073a #677 init folder for pattern trampoline 2018-01-08 14:00:12 +03:00
09c0891948 Merge pull request #693 from jujis008/master
fixed issue #681
2018-01-08 07:55:39 +02:00
90570f809b rename png file and changes for README.md 2018-01-08 11:09:04 +08:00
55be744c4a #674 update SonarQube badge URL and link 2018-01-07 21:34:15 +02:00
c34975bdff #674 update SonarQube analysis URL 2018-01-07 21:25:00 +02:00
ed37d5cdc7 regenerate UML diagram 2018-01-07 12:26:58 +08:00
f87754917c Merge pull request #690 from amogozov/master
Cleanup commented code
2018-01-02 19:29:14 +02:00
e046007db7 fixed issue #681 2018-01-02 18:23:11 +08:00
0306161380 Cleanup commented code 2018-01-02 09:24:18 +09:00
dea2316f1f Set version for next development iteration 2018-01-01 16:58:29 +02:00
1f067b845e Merge pull request #637 from danielsiwiec/java9-running-tests
Configuration changes needed to run tests on Java 9
2017-09-24 18:56:47 +03:00
684cad9beb added tutorial links to bridge, decorator, abstract-factory, strategy and template method patterns 2017-09-23 20:55:38 -04:00
00bdfd6bd8 add another jdk 9 module to prevent class not found errors #591 2017-09-12 23:30:43 -07:00
f07d3bd4d5 Turn forking on to prevent datanucleus from missing a jdk 9 module #591 2017-09-12 22:12:05 -07:00
546f3560d8 Load ee module to make EE classes available on classpath #591 2017-09-12 18:09:29 -07:00
0ac1f43f8a Upgrade jacoco version to fix the UUID initialization problem #591 2017-09-12 18:08:56 -07:00
e1d8266c95 Merge branch 'master' into java9 2017-09-03 12:26:27 +03:00
3c6f7aa046 Protect against instantiation via reflection
Signed-off-by: Igor C. A. de Lima <igorcadelima@gmail.com>
2017-08-12 12:11:10 -03:00
209 changed files with 912 additions and 432 deletions

View File

@ -17,7 +17,7 @@ install:
- mvn install -DskipTests=true -Dmaven.javadoc.skip=true -B -V -e - mvn install -DskipTests=true -Dmaven.javadoc.skip=true -B -V -e
after_success: after_success:
- mvn clean org.jacoco:jacoco-maven-plugin:prepare-agent package sonar:sonar -Dsonar.host.url=https://sonarqube.com -Dsonar.login=$SONAR_TOKEN - mvn clean org.jacoco:jacoco-maven-plugin:prepare-agent package sonar:sonar -Dsonar.host.url=https://sonarcloud.io -Dsonar.login=$SONAR_TOKEN
- bash update-ghpages.sh - bash update-ghpages.sh
# use latest java version available instead of travis default # use latest java version available instead of travis default

View File

@ -7,7 +7,7 @@
[![Build status](https://travis-ci.org/iluwatar/java-design-patterns.svg?branch=master)](https://travis-ci.org/iluwatar/java-design-patterns) [![Build status](https://travis-ci.org/iluwatar/java-design-patterns.svg?branch=master)](https://travis-ci.org/iluwatar/java-design-patterns)
[![License MIT](https://img.shields.io/badge/license-MIT-blue.svg)](https://raw.githubusercontent.com/iluwatar/java-design-patterns/master/LICENSE.md) [![License MIT](https://img.shields.io/badge/license-MIT-blue.svg)](https://raw.githubusercontent.com/iluwatar/java-design-patterns/master/LICENSE.md)
[![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) [![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)
[![Quality Gate](https://sonarqube.com/api/badges/gate?key=com.iluwatar%3Ajava-design-patterns)](https://sonarqube.com/dashboard/index/com.iluwatar%3Ajava-design-patterns) [![Quality Gate](https://sonarcloud.io/api/project_badges/measure?project=com.iluwatar%3Ajava-design-patterns&metric=alert_status)](https://sonarcloud.io/dashboard/index/com.iluwatar%3Ajava-design-patterns)
[![CII Best Practices](https://bestpractices.coreinfrastructure.org/projects/1503/badge)](https://bestpractices.coreinfrastructure.org/projects/1503) [![CII Best Practices](https://bestpractices.coreinfrastructure.org/projects/1503/badge)](https://bestpractices.coreinfrastructure.org/projects/1503)
# Introduction # Introduction

View File

@ -12,8 +12,6 @@ tags:
## Intent ## Intent
Achieve flexibility of untyped languages and keep the type-safety Achieve flexibility of untyped languages and keep the type-safety
![alt text](./etc/abstract-document-base.png "Abstract Document Base")
![alt text](./etc/abstract-document.png "Abstract Document Traits and Domain") ![alt text](./etc/abstract-document.png "Abstract Document Traits and Domain")

Binary file not shown.

Before

Width:  |  Height:  |  Size: 15 KiB

View File

@ -1,58 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<class-diagram version="1.1.9" icons="true" automaticImage="PNG" always-add-relationships="false" generalizations="true"
realizations="true" associations="true" dependencies="false" nesting-relationships="true" router="FAN">
<interface id="1" language="java" name="com.iluwatar.abstractdocument.Document" project="design-patterns"
file="/design-patterns/src/com/iluwatar/abstractdocument/Document.java" binary="false" corner="BOTTOM_RIGHT">
<position height="-1" width="-1" x="249" y="405"/>
<display autosize="true" stereotype="true" package="true" initial-value="false" signature="true"
sort-features="false" accessors="true" visibility="true">
<attributes public="true" package="true" protected="true" private="true" static="true"/>
<operations public="true" package="true" protected="true" private="true" static="true"/>
</display>
</interface>
<class id="2" language="java" name="com.iluwatar.abstractdocument.AbstractDocument" project="design-patterns"
file="/design-patterns/src/com/iluwatar/abstractdocument/AbstractDocument.java" binary="false" corner="BOTTOM_RIGHT">
<position height="-1" width="-1" x="250" y="237"/>
<display autosize="true" stereotype="true" package="true" initial-value="false" signature="true"
sort-features="false" accessors="true" visibility="true">
<attributes public="true" package="true" protected="true" private="true" static="true"/>
<operations public="true" package="true" protected="true" private="true" static="true"/>
</display>
</class>
<class id="3" language="java" name="com.iluwatar.abstractdocument.domain.Car" project="design-patterns"
file="/design-patterns/src/com/iluwatar/abstractdocument/domain/Car.java" binary="false" corner="BOTTOM_RIGHT">
<position height="-1" width="-1" x="108" y="75"/>
<display autosize="true" stereotype="true" package="true" initial-value="false" signature="true"
sort-features="false" accessors="true" visibility="true">
<attributes public="true" package="true" protected="true" private="true" static="true"/>
<operations public="true" package="true" protected="true" private="true" static="true"/>
</display>
</class>
<class id="4" language="java" name="com.iluwatar.abstractdocument.domain.Part" project="design-patterns"
file="/design-patterns/src/com/iluwatar/abstractdocument/domain/Part.java" binary="false" corner="BOTTOM_RIGHT">
<position height="-1" width="-1" x="400" y="76"/>
<display autosize="true" stereotype="true" package="true" initial-value="false" signature="true"
sort-features="false" accessors="true" visibility="true">
<attributes public="true" package="true" protected="true" private="true" static="true"/>
<operations public="true" package="true" protected="true" private="true" static="true"/>
</display>
</class>
<generalization id="5">
<end type="SOURCE" refId="4"/>
<end type="TARGET" refId="2"/>
</generalization>
<realization id="6">
<end type="SOURCE" refId="2"/>
<end type="TARGET" refId="1"/>
</realization>
<generalization id="7">
<end type="SOURCE" refId="3"/>
<end type="TARGET" refId="2"/>
</generalization>
<classifier-display autosize="true" stereotype="true" package="true" initial-value="false" signature="true"
sort-features="false" accessors="true" visibility="true">
<attributes public="true" package="true" protected="true" private="true" static="true"/>
<operations public="true" package="true" protected="true" private="true" static="true"/>
</classifier-display>
<association-display labels="true" multiplicity="true"/>
</class-diagram>

Binary file not shown.

Before

Width:  |  Height:  |  Size: 16 KiB

After

Width:  |  Height:  |  Size: 94 KiB

View File

@ -1,91 +1,137 @@
<?xml version="1.0" encoding="UTF-8"?> <?xml version="1.0" encoding="UTF-8"?>
<class-diagram version="1.1.9" icons="true" automaticImage="PNG" always-add-relationships="false" generalizations="true" <class-diagram version="1.2.2" icons="true" always-add-relationships="false" generalizations="true" realizations="true"
realizations="true" associations="true" dependencies="false" nesting-relationships="true" router="FAN"> associations="true" dependencies="false" nesting-relationships="true" router="FAN">
<interface id="1" language="java" name="com.iluwatar.abstractdocument.Document" project="design-patterns" <class id="1" language="java" name="com.iluwatar.abstractdocument.AbstractDocument" project="abstract-document"
file="/design-patterns/src/com/iluwatar/abstractdocument/Document.java" binary="false" corner="BOTTOM_RIGHT"> file="/abstract-document/src/main/java/com/iluwatar/abstractdocument/AbstractDocument.java" binary="false"
<position height="-1" width="-1" x="341" y="376"/> corner="BOTTOM_RIGHT">
<display autosize="true" stereotype="true" package="true" initial-value="false" signature="true" <position height="-1" width="-1" x="659" y="286"/>
sort-features="false" accessors="true" visibility="true">
<attributes public="true" package="true" protected="true" private="true" static="true"/>
<operations public="true" package="true" protected="true" private="true" static="true"/>
</display>
</interface>
<interface id="2" language="java" name="com.iluwatar.abstractdocument.domain.HasModel" project="design-patterns"
file="/design-patterns/src/com/iluwatar/abstractdocument/domain/HasModel.java" binary="false" corner="BOTTOM_RIGHT">
<position height="81" width="173" x="41" y="194"/>
<display autosize="true" stereotype="true" package="true" initial-value="false" signature="true"
sort-features="false" accessors="true" visibility="true">
<attributes public="true" package="true" protected="true" private="true" static="true"/>
<operations public="true" package="true" protected="true" private="true" static="true"/>
</display>
</interface>
<interface id="3" language="java" name="com.iluwatar.abstractdocument.domain.HasPrice" project="design-patterns"
file="/design-patterns/src/com/iluwatar/abstractdocument/domain/HasPrice.java" binary="false" corner="BOTTOM_RIGHT">
<position height="81" width="175" x="254" y="194"/>
<display autosize="true" stereotype="true" package="true" initial-value="false" signature="true"
sort-features="false" accessors="true" visibility="true">
<attributes public="true" package="true" protected="true" private="true" static="true"/>
<operations public="true" package="true" protected="true" private="true" static="true"/>
</display>
</interface>
<interface id="4" language="java" name="com.iluwatar.abstractdocument.domain.HasParts" project="design-patterns"
file="/design-patterns/src/com/iluwatar/abstractdocument/domain/HasParts.java" binary="false" corner="BOTTOM_RIGHT">
<position height="81" width="173" x="469" y="194"/>
<display autosize="true" stereotype="true" package="true" initial-value="false" signature="true"
sort-features="false" accessors="true" visibility="true">
<attributes public="true" package="true" protected="true" private="true" static="true"/>
<operations public="true" package="true" protected="true" private="true" static="true"/>
</display>
</interface>
<class id="5" language="java" name="com.iluwatar.abstractdocument.domain.Car" project="design-patterns"
file="/design-patterns/src/com/iluwatar/abstractdocument/domain/Car.java" binary="false" corner="BOTTOM_RIGHT">
<position height="99" width="173" x="254" y="37"/>
<display autosize="true" stereotype="true" package="true" initial-value="false" signature="true" <display autosize="true" stereotype="true" package="true" initial-value="false" signature="true"
sort-features="false" accessors="true" visibility="true"> sort-features="false" accessors="true" visibility="true">
<attributes public="true" package="true" protected="true" private="true" static="true"/> <attributes public="true" package="true" protected="true" private="true" static="true"/>
<operations public="true" package="true" protected="true" private="true" static="true"/> <operations public="true" package="true" protected="true" private="true" static="true"/>
</display> </display>
</class> </class>
<class id="6" language="java" name="com.iluwatar.abstractdocument.domain.Part" project="design-patterns" <interface id="2" language="java" name="com.iluwatar.abstractdocument.Document" project="abstract-document"
file="/design-patterns/src/com/iluwatar/abstractdocument/domain/Part.java" binary="false" corner="BOTTOM_RIGHT"> file="/abstract-document/src/main/java/com/iluwatar/abstractdocument/Document.java" binary="false"
<position height="99" width="173" x="41" y="37"/> corner="BOTTOM_RIGHT">
<position height="-1" width="-1" x="562" y="27"/>
<display autosize="true" stereotype="true" package="true" initial-value="false" signature="true"
sort-features="false" accessors="true" visibility="true">
<attributes public="true" package="true" protected="true" private="true" static="true"/>
<operations public="true" package="true" protected="true" private="true" static="true"/>
</display>
</interface>
<class id="3" language="java" name="com.iluwatar.abstractdocument.domain.Car" project="abstract-document"
file="/abstract-document/src/main/java/com/iluwatar/abstractdocument/domain/Car.java" binary="false"
corner="BOTTOM_RIGHT">
<position height="-1" width="-1" x="348" y="737"/>
<display autosize="true" stereotype="true" package="true" initial-value="false" signature="true" <display autosize="true" stereotype="true" package="true" initial-value="false" signature="true"
sort-features="false" accessors="true" visibility="true"> sort-features="false" accessors="true" visibility="true">
<attributes public="true" package="true" protected="true" private="true" static="true"/> <attributes public="true" package="true" protected="true" private="true" static="true"/>
<operations public="true" package="true" protected="true" private="true" static="true"/> <operations public="true" package="true" protected="true" private="true" static="true"/>
</display> </display>
</class> </class>
<realization id="7"> <class id="4" language="java" name="com.iluwatar.abstractdocument.domain.Part" project="abstract-document"
<end type="SOURCE" refId="5"/> file="/abstract-document/src/main/java/com/iluwatar/abstractdocument/domain/Part.java" binary="false"
<end type="TARGET" refId="2"/> corner="BOTTOM_RIGHT">
<position height="-1" width="-1" x="760" y="746"/>
<display autosize="true" stereotype="true" package="true" initial-value="false" signature="true"
sort-features="false" accessors="true" visibility="true">
<attributes public="true" package="true" protected="true" private="true" static="true"/>
<operations public="true" package="true" protected="true" private="true" static="true"/>
</display>
</class>
<interface id="5" language="java" name="com.iluwatar.abstractdocument.domain.HasModel" project="abstract-document"
file="/abstract-document/src/main/java/com/iluwatar/abstractdocument/domain/HasModel.java" binary="false"
corner="BOTTOM_RIGHT">
<position height="-1" width="-1" x="355" y="297"/>
<display autosize="true" stereotype="true" package="true" initial-value="false" signature="true"
sort-features="false" accessors="true" visibility="true">
<attributes public="true" package="true" protected="true" private="true" static="true"/>
<operations public="true" package="true" protected="true" private="true" static="true"/>
</display>
</interface>
<interface id="6" language="java" name="com.iluwatar.abstractdocument.domain.HasParts" project="abstract-document"
file="/abstract-document/src/main/java/com/iluwatar/abstractdocument/domain/HasParts.java" binary="false"
corner="BOTTOM_RIGHT">
<position height="-1" width="-1" x="109" y="297"/>
<display autosize="true" stereotype="true" package="true" initial-value="false" signature="true"
sort-features="false" accessors="true" visibility="true">
<attributes public="true" package="true" protected="true" private="true" static="true"/>
<operations public="true" package="true" protected="true" private="true" static="true"/>
</display>
</interface>
<interface id="7" language="java" name="com.iluwatar.abstractdocument.domain.HasPrice" project="abstract-document"
file="/abstract-document/src/main/java/com/iluwatar/abstractdocument/domain/HasPrice.java" binary="false"
corner="BOTTOM_RIGHT">
<position height="-1" width="-1" x="1008" y="283"/>
<display autosize="true" stereotype="true" package="true" initial-value="false" signature="true"
sort-features="false" accessors="true" visibility="true">
<attributes public="true" package="true" protected="true" private="true" static="true"/>
<operations public="true" package="true" protected="true" private="true" static="true"/>
</display>
</interface>
<interface id="8" language="java" name="com.iluwatar.abstractdocument.domain.HasType" project="abstract-document"
file="/abstract-document/src/main/java/com/iluwatar/abstractdocument/domain/HasType.java" binary="false"
corner="BOTTOM_RIGHT">
<position height="-1" width="-1" x="1257" y="277"/>
<display autosize="true" stereotype="true" package="true" initial-value="false" signature="true"
sort-features="false" accessors="true" visibility="true">
<attributes public="true" package="true" protected="true" private="true" static="true"/>
<operations public="true" package="true" protected="true" private="true" static="true"/>
</display>
</interface>
<realization id="9">
<end type="SOURCE" refId="4"/>
<end type="TARGET" refId="8"/>
</realization> </realization>
<realization id="8"> <realization id="10">
<end type="SOURCE" refId="3"/>
<end type="TARGET" refId="7"/>
</realization>
<generalization id="11">
<end type="SOURCE" refId="6"/> <end type="SOURCE" refId="6"/>
<end type="TARGET" refId="2"/> <end type="TARGET" refId="2"/>
</realization>
<generalization id="9">
<end type="SOURCE" refId="2"/>
<end type="TARGET" refId="1"/>
</generalization> </generalization>
<realization id="10"> <realization id="12">
<end type="SOURCE" refId="5"/> <end type="SOURCE" refId="4"/>
<end type="TARGET" refId="3"/> <end type="TARGET" refId="5"/>
</realization> </realization>
<realization id="11"> <realization id="13">
<end type="SOURCE" refId="5"/> <end type="SOURCE" refId="4"/>
<end type="TARGET" refId="4"/> <end type="TARGET" refId="7"/>
</realization> </realization>
<generalization id="12"> <generalization id="14">
<end type="SOURCE" refId="3"/> <end type="SOURCE" refId="3"/>
<end type="TARGET" refId="1"/> <end type="TARGET" refId="1"/>
</generalization> </generalization>
<generalization id="13"> <realization id="15">
<end type="SOURCE" refId="3"/>
<end type="TARGET" refId="6"/>
</realization>
<generalization id="16">
<end type="SOURCE" refId="8"/>
<end type="TARGET" refId="2"/>
</generalization>
<generalization id="17">
<end type="SOURCE" refId="7"/>
<end type="TARGET" refId="2"/>
</generalization>
<realization id="18">
<end type="SOURCE" refId="3"/>
<end type="TARGET" refId="5"/>
</realization>
<generalization id="19">
<end type="SOURCE" refId="4"/> <end type="SOURCE" refId="4"/>
<end type="TARGET" refId="1"/> <end type="TARGET" refId="1"/>
</generalization> </generalization>
<realization id="14"> <generalization id="20">
<end type="SOURCE" refId="6"/> <end type="SOURCE" refId="5"/>
<end type="TARGET" refId="3"/> <end type="TARGET" refId="2"/>
</generalization>
<realization id="21">
<end type="SOURCE" refId="1"/>
<end type="TARGET" refId="2"/>
</realization> </realization>
<classifier-display autosize="true" stereotype="true" package="true" initial-value="false" signature="true" <classifier-display autosize="true" stereotype="true" package="true" initial-value="false" signature="true"
sort-features="false" accessors="true" visibility="true"> sort-features="false" accessors="true" visibility="true">

View File

@ -29,7 +29,7 @@
<parent> <parent>
<artifactId>java-design-patterns</artifactId> <artifactId>java-design-patterns</artifactId>
<groupId>com.iluwatar</groupId> <groupId>com.iluwatar</groupId>
<version>1.18.0</version> <version>1.19.0-SNAPSHOT</version>
</parent> </parent>
<artifactId>abstract-document</artifactId> <artifactId>abstract-document</artifactId>
<dependencies> <dependencies>

View File

@ -179,10 +179,15 @@ Use the Abstract Factory pattern when
* Dependency injection in java hides the service class dependencies that can lead to runtime errors that would have been caught at compile time. * Dependency injection in java hides the service class dependencies that can lead to runtime errors that would have been caught at compile time.
## Tutorial
* [Abstract Factory Pattern Tutorial](https://www.journaldev.com/1418/abstract-factory-design-pattern-in-java)
## Presentations ## Presentations
* [Abstract Factory Pattern](etc/presentation.html) * [Abstract Factory Pattern](etc/presentation.html)
## Real world examples ## Real world examples
* [javax.xml.parsers.DocumentBuilderFactory](http://docs.oracle.com/javase/8/docs/api/javax/xml/parsers/DocumentBuilderFactory.html) * [javax.xml.parsers.DocumentBuilderFactory](http://docs.oracle.com/javase/8/docs/api/javax/xml/parsers/DocumentBuilderFactory.html)

View File

@ -29,7 +29,7 @@
<parent> <parent>
<groupId>com.iluwatar</groupId> <groupId>com.iluwatar</groupId>
<artifactId>java-design-patterns</artifactId> <artifactId>java-design-patterns</artifactId>
<version>1.18.0</version> <version>1.19.0-SNAPSHOT</version>
</parent> </parent>
<artifactId>abstract-factory</artifactId> <artifactId>abstract-factory</artifactId>
<dependencies> <dependencies>

View File

@ -29,7 +29,7 @@
<parent> <parent>
<groupId>com.iluwatar</groupId> <groupId>com.iluwatar</groupId>
<artifactId>java-design-patterns</artifactId> <artifactId>java-design-patterns</artifactId>
<version>1.18.0</version> <version>1.19.0-SNAPSHOT</version>
</parent> </parent>
<artifactId>adapter</artifactId> <artifactId>adapter</artifactId>
<dependencies> <dependencies>

View File

@ -26,7 +26,7 @@ package com.iluwatar.adapter;
* The Captain uses {@link RowingBoat} to sail. <br> * The Captain uses {@link RowingBoat} to sail. <br>
* This is the client in the pattern. * This is the client in the pattern.
*/ */
public class Captain implements RowingBoat { public class Captain {
private RowingBoat rowingBoat; private RowingBoat rowingBoat;
@ -40,7 +40,6 @@ public class Captain implements RowingBoat {
this.rowingBoat = rowingBoat; this.rowingBoat = rowingBoat;
} }
@Override
public void row() { public void row() {
rowingBoat.row(); rowingBoat.row();
} }

View File

@ -66,7 +66,7 @@ public class AdapterPatternTest {
*/ */
@Test @Test
public void testAdapter() { public void testAdapter() {
RowingBoat captain = (RowingBoat) beans.get(ROWING_BEAN); Captain captain = (Captain) beans.get(ROWING_BEAN);
// when captain moves // when captain moves
captain.row(); captain.row();

View File

@ -29,7 +29,7 @@
<parent> <parent>
<artifactId>aggregator-microservices</artifactId> <artifactId>aggregator-microservices</artifactId>
<groupId>com.iluwatar</groupId> <groupId>com.iluwatar</groupId>
<version>1.18.0</version> <version>1.19.0-SNAPSHOT</version>
</parent> </parent>
<modelVersion>4.0.0</modelVersion> <modelVersion>4.0.0</modelVersion>

View File

@ -29,7 +29,7 @@
<parent> <parent>
<artifactId>aggregator-microservices</artifactId> <artifactId>aggregator-microservices</artifactId>
<groupId>com.iluwatar</groupId> <groupId>com.iluwatar</groupId>
<version>1.18.0</version> <version>1.19.0-SNAPSHOT</version>
</parent> </parent>
<modelVersion>4.0.0</modelVersion> <modelVersion>4.0.0</modelVersion>

View File

@ -29,7 +29,7 @@
<parent> <parent>
<artifactId>aggregator-microservices</artifactId> <artifactId>aggregator-microservices</artifactId>
<groupId>com.iluwatar</groupId> <groupId>com.iluwatar</groupId>
<version>1.18.0</version> <version>1.19.0-SNAPSHOT</version>
</parent> </parent>
<modelVersion>4.0.0</modelVersion> <modelVersion>4.0.0</modelVersion>

View File

@ -29,7 +29,7 @@
<parent> <parent>
<artifactId>java-design-patterns</artifactId> <artifactId>java-design-patterns</artifactId>
<groupId>com.iluwatar</groupId> <groupId>com.iluwatar</groupId>
<version>1.18.0</version> <version>1.19.0-SNAPSHOT</version>
</parent> </parent>
<modelVersion>4.0.0</modelVersion> <modelVersion>4.0.0</modelVersion>
<artifactId>aggregator-microservices</artifactId> <artifactId>aggregator-microservices</artifactId>

View File

@ -29,7 +29,7 @@
<parent> <parent>
<artifactId>api-gateway</artifactId> <artifactId>api-gateway</artifactId>
<groupId>com.iluwatar</groupId> <groupId>com.iluwatar</groupId>
<version>1.18.0</version> <version>1.19.0-SNAPSHOT</version>
</parent> </parent>
<modelVersion>4.0.0</modelVersion> <modelVersion>4.0.0</modelVersion>
<artifactId>api-gateway-service</artifactId> <artifactId>api-gateway-service</artifactId>

View File

@ -29,7 +29,7 @@
<parent> <parent>
<artifactId>api-gateway</artifactId> <artifactId>api-gateway</artifactId>
<groupId>com.iluwatar</groupId> <groupId>com.iluwatar</groupId>
<version>1.18.0</version> <version>1.19.0-SNAPSHOT</version>
</parent> </parent>
<modelVersion>4.0.0</modelVersion> <modelVersion>4.0.0</modelVersion>

View File

@ -29,7 +29,7 @@
<parent> <parent>
<artifactId>java-design-patterns</artifactId> <artifactId>java-design-patterns</artifactId>
<groupId>com.iluwatar</groupId> <groupId>com.iluwatar</groupId>
<version>1.18.0</version> <version>1.19.0-SNAPSHOT</version>
</parent> </parent>
<modelVersion>4.0.0</modelVersion> <modelVersion>4.0.0</modelVersion>
<artifactId>api-gateway</artifactId> <artifactId>api-gateway</artifactId>

View File

@ -29,7 +29,7 @@
<parent> <parent>
<artifactId>api-gateway</artifactId> <artifactId>api-gateway</artifactId>
<groupId>com.iluwatar</groupId> <groupId>com.iluwatar</groupId>
<version>1.18.0</version> <version>1.19.0-SNAPSHOT</version>
</parent> </parent>
<modelVersion>4.0.0</modelVersion> <modelVersion>4.0.0</modelVersion>

View File

@ -29,7 +29,7 @@
<parent> <parent>
<groupId>com.iluwatar</groupId> <groupId>com.iluwatar</groupId>
<artifactId>java-design-patterns</artifactId> <artifactId>java-design-patterns</artifactId>
<version>1.18.0</version> <version>1.19.0-SNAPSHOT</version>
</parent> </parent>
<artifactId>async-method-invocation</artifactId> <artifactId>async-method-invocation</artifactId>
<dependencies> <dependencies>

View File

@ -29,7 +29,7 @@
<parent> <parent>
<artifactId>java-design-patterns</artifactId> <artifactId>java-design-patterns</artifactId>
<groupId>com.iluwatar</groupId> <groupId>com.iluwatar</groupId>
<version>1.18.0</version> <version>1.19.0-SNAPSHOT</version>
</parent> </parent>
<modelVersion>4.0.0</modelVersion> <modelVersion>4.0.0</modelVersion>

View File

@ -188,6 +188,9 @@ Use the Bridge pattern when
* you have a proliferation of classes. Such a class hierarchy indicates the need for splitting an object into two parts. Rumbaugh uses the term "nested generalizations" to refer to such class hierarchies * you have a proliferation of classes. Such a class hierarchy indicates the need for splitting an object into two parts. Rumbaugh uses the term "nested generalizations" to refer to such class hierarchies
* you want to share an implementation among multiple objects (perhaps using reference counting), and this fact should be hidden from the client. A simple example is Coplien's String class, in which multiple objects can share the same string representation. * you want to share an implementation among multiple objects (perhaps using reference counting), and this fact should be hidden from the client. A simple example is Coplien's String class, in which multiple objects can share the same string representation.
## Tutorial
* [Bridge Pattern Tutorial](https://www.journaldev.com/1491/bridge-design-pattern-java)
## Credits ## Credits
* [Design Patterns: Elements of Reusable Object-Oriented Software](http://www.amazon.com/Design-Patterns-Elements-Reusable-Object-Oriented/dp/0201633612) * [Design Patterns: Elements of Reusable Object-Oriented Software](http://www.amazon.com/Design-Patterns-Elements-Reusable-Object-Oriented/dp/0201633612)

View File

@ -29,7 +29,7 @@
<parent> <parent>
<groupId>com.iluwatar</groupId> <groupId>com.iluwatar</groupId>
<artifactId>java-design-patterns</artifactId> <artifactId>java-design-patterns</artifactId>
<version>1.18.0</version> <version>1.19.0-SNAPSHOT</version>
</parent> </parent>
<artifactId>bridge</artifactId> <artifactId>bridge</artifactId>
<dependencies> <dependencies>

View File

@ -29,7 +29,7 @@
<parent> <parent>
<groupId>com.iluwatar</groupId> <groupId>com.iluwatar</groupId>
<artifactId>java-design-patterns</artifactId> <artifactId>java-design-patterns</artifactId>
<version>1.18.0</version> <version>1.19.0-SNAPSHOT</version>
</parent> </parent>
<artifactId>builder</artifactId> <artifactId>builder</artifactId>
<dependencies> <dependencies>

View File

@ -30,7 +30,7 @@
<parent> <parent>
<groupId>com.iluwatar</groupId> <groupId>com.iluwatar</groupId>
<artifactId>java-design-patterns</artifactId> <artifactId>java-design-patterns</artifactId>
<version>1.18.0</version> <version>1.19.0-SNAPSHOT</version>
</parent> </parent>
<artifactId>business-delegate</artifactId> <artifactId>business-delegate</artifactId>
<dependencies> <dependencies>

View File

@ -29,7 +29,7 @@
<parent> <parent>
<groupId>com.iluwatar</groupId> <groupId>com.iluwatar</groupId>
<artifactId>java-design-patterns</artifactId> <artifactId>java-design-patterns</artifactId>
<version>1.18.0</version> <version>1.19.0-SNAPSHOT</version>
</parent> </parent>
<artifactId>caching</artifactId> <artifactId>caching</artifactId>
<dependencies> <dependencies>

View File

@ -52,12 +52,12 @@ import org.slf4j.LoggerFactory;
* whether the data is coming from the cache or the DB (i.e. separation of concern). The AppManager * whether the data is coming from the cache or the DB (i.e. separation of concern). The AppManager
* ({@link AppManager}) handles the transaction of data to-and-from the underlying data store * ({@link AppManager}) handles the transaction of data to-and-from the underlying data store
* (depending on the preferred caching policy/strategy). * (depending on the preferred caching policy/strategy).
* * <p>
* <i>App --> AppManager --> CacheStore/LRUCache/CachingPolicy --> DBManager</i> * <i>{@literal App --> AppManager --> CacheStore/LRUCache/CachingPolicy --> DBManager} </i>
* </p> * </p>
* *
* @see CacheStore * @see CacheStore
* @See LRUCache * @see LruCache
* @see CachingPolicy * @see CachingPolicy
* *
*/ */

View File

@ -29,7 +29,7 @@
<parent> <parent>
<groupId>com.iluwatar</groupId> <groupId>com.iluwatar</groupId>
<artifactId>java-design-patterns</artifactId> <artifactId>java-design-patterns</artifactId>
<version>1.18.0</version> <version>1.19.0-SNAPSHOT</version>
</parent> </parent>
<artifactId>callback</artifactId> <artifactId>callback</artifactId>
<dependencies> <dependencies>

View File

@ -29,7 +29,7 @@
<parent> <parent>
<groupId>com.iluwatar</groupId> <groupId>com.iluwatar</groupId>
<artifactId>java-design-patterns</artifactId> <artifactId>java-design-patterns</artifactId>
<version>1.18.0</version> <version>1.19.0-SNAPSHOT</version>
</parent> </parent>
<artifactId>chain</artifactId> <artifactId>chain</artifactId>
<dependencies> <dependencies>

View File

@ -29,7 +29,7 @@
<parent> <parent>
<groupId>com.iluwatar</groupId> <groupId>com.iluwatar</groupId>
<artifactId>java-design-patterns</artifactId> <artifactId>java-design-patterns</artifactId>
<version>1.18.0</version> <version>1.19.0-SNAPSHOT</version>
</parent> </parent>
<artifactId>command</artifactId> <artifactId>command</artifactId>
<dependencies> <dependencies>

View File

@ -29,7 +29,7 @@
<parent> <parent>
<groupId>com.iluwatar</groupId> <groupId>com.iluwatar</groupId>
<artifactId>java-design-patterns</artifactId> <artifactId>java-design-patterns</artifactId>
<version>1.18.0</version> <version>1.19.0-SNAPSHOT</version>
</parent> </parent>
<artifactId>composite</artifactId> <artifactId>composite</artifactId>
<dependencies> <dependencies>

View File

@ -29,7 +29,7 @@
<parent> <parent>
<artifactId>java-design-patterns</artifactId> <artifactId>java-design-patterns</artifactId>
<groupId>com.iluwatar</groupId> <groupId>com.iluwatar</groupId>
<version>1.18.0</version> <version>1.19.0-SNAPSHOT</version>
</parent> </parent>
<modelVersion>4.0.0</modelVersion> <modelVersion>4.0.0</modelVersion>
<dependencies> <dependencies>

View File

@ -21,7 +21,7 @@
<parent> <parent>
<groupId>com.iluwatar</groupId> <groupId>com.iluwatar</groupId>
<artifactId>java-design-patterns</artifactId> <artifactId>java-design-patterns</artifactId>
<version>1.18.0</version> <version>1.19.0-SNAPSHOT</version>
</parent> </parent>
<artifactId>cqrs</artifactId> <artifactId>cqrs</artifactId>
<dependencies> <dependencies>

View File

@ -50,14 +50,12 @@ public class Author {
* email of the author * email of the author
*/ */
public Author(String username, String name, String email) { public Author(String username, String name, String email) {
super();
this.username = username; this.username = username;
this.name = name; this.name = name;
this.email = email; this.email = email;
} }
protected Author() { protected Author() {
super();
} }
public long getId() { public long getId() {

View File

@ -52,14 +52,12 @@ public class Book {
* author of the book * author of the book
*/ */
public Book(String title, double price, Author author) { public Book(String title, double price, Author author) {
super();
this.title = title; this.title = title;
this.price = price; this.price = price;
this.author = author; this.author = author;
} }
protected Book() { protected Book() {
super();
} }
public long getId() { public long getId() {

View File

@ -45,14 +45,12 @@ public class Author {
* username of the author * username of the author
*/ */
public Author(String name, String email, String username) { public Author(String name, String email, String username) {
super();
this.name = name; this.name = name;
this.email = email; this.email = email;
this.username = username; this.username = username;
} }
public Author() { public Author() {
super();
} }
public String getName() { public String getName() {

View File

@ -42,13 +42,11 @@ public class Book {
* price of the book * price of the book
*/ */
public Book(String title, double price) { public Book(String title, double price) {
super();
this.title = title; this.title = title;
this.price = price; this.price = price;
} }
public Book() { public Book() {
super();
} }
public String getTitle() { public String getTitle() {

View File

@ -30,7 +30,7 @@
<parent> <parent>
<groupId>com.iluwatar</groupId> <groupId>com.iluwatar</groupId>
<artifactId>java-design-patterns</artifactId> <artifactId>java-design-patterns</artifactId>
<version>1.18.0</version> <version>1.19.0-SNAPSHOT</version>
</parent> </parent>
<artifactId>dao</artifactId> <artifactId>dao</artifactId>

View File

@ -31,7 +31,7 @@ import java.util.stream.Stream;
/** /**
* An in memory implementation of {@link CustomerDao}, which stores the customers in JVM memory * An in memory implementation of {@link CustomerDao}, which stores the customers in JVM memory
* and data is lost when the application exits. * and data is lost when the application exits.
* <br/> * <br>
* This implementation is useful as temporary database or for testing. * This implementation is useful as temporary database or for testing.
*/ */
public class InMemoryCustomerDao implements CustomerDao { public class InMemoryCustomerDao implements CustomerDao {

View File

@ -185,7 +185,6 @@ public class DbCustomerDaoTest {
public class ConnectivityIssue { public class ConnectivityIssue {
private static final String EXCEPTION_CAUSE = "Connection not available"; private static final String EXCEPTION_CAUSE = "Connection not available";
//@Rule public ExpectedException exception = ExpectedException.none();
/** /**
* setup a connection failure scenario. * setup a connection failure scenario.
@ -194,8 +193,6 @@ public class DbCustomerDaoTest {
@BeforeEach @BeforeEach
public void setUp() throws SQLException { public void setUp() throws SQLException {
dao = new DbCustomerDao(mockedDatasource()); dao = new DbCustomerDao(mockedDatasource());
//exception.expect(Exception.class);
//exception.expectMessage(EXCEPTION_CAUSE);
} }
private DataSource mockedDatasource() throws SQLException { private DataSource mockedDatasource() throws SQLException {

View File

@ -33,7 +33,7 @@
<parent> <parent>
<groupId>com.iluwatar</groupId> <groupId>com.iluwatar</groupId>
<artifactId>java-design-patterns</artifactId> <artifactId>java-design-patterns</artifactId>
<version>1.18.0</version> <version>1.19.0-SNAPSHOT</version>
</parent> </parent>
<artifactId>data-bus</artifactId> <artifactId>data-bus</artifactId>
<dependencies> <dependencies>

View File

@ -34,8 +34,7 @@ import java.time.LocalDateTime;
/** /**
* The Data Bus pattern * The Data Bus pattern
* <p> * <p>
* <p>{@see http://wiki.c2.com/?DataBusPattern}</p> * @see <a href="http://wiki.c2.com/?DataBusPattern">http://wiki.c2.com/?DataBusPattern</a>
* <p>
* <p>The Data-Bus pattern provides a method where different parts of an application may * <p>The Data-Bus pattern provides a method where different parts of an application may
* pass messages between each other without needing to be aware of the other's existence.</p> * pass messages between each other without needing to be aware of the other's existence.</p>
* <p>Similar to the {@code ObserverPattern}, members register themselves with the {@link DataBus} * <p>Similar to the {@code ObserverPattern}, members register themselves with the {@link DataBus}

View File

@ -28,7 +28,7 @@
<parent> <parent>
<groupId>com.iluwatar</groupId> <groupId>com.iluwatar</groupId>
<artifactId>java-design-patterns</artifactId> <artifactId>java-design-patterns</artifactId>
<version>1.18.0</version> <version>1.19.0-SNAPSHOT</version>
</parent> </parent>
<artifactId>data-mapper</artifactId> <artifactId>data-mapper</artifactId>
<dependencies> <dependencies>

View File

@ -41,8 +41,6 @@ public final class Student implements Serializable {
* @param grade as respective grade of student * @param grade as respective grade of student
*/ */
public Student(final int studentId, final String name, final char grade) { public Student(final int studentId, final String name, final char grade) {
super();
this.studentId = studentId; this.studentId = studentId;
this.name = name; this.name = name;
this.grade = grade; this.grade = grade;

View File

@ -28,7 +28,7 @@
<parent> <parent>
<groupId>com.iluwatar</groupId> <groupId>com.iluwatar</groupId>
<artifactId>java-design-patterns</artifactId> <artifactId>java-design-patterns</artifactId>
<version>1.18.0</version> <version>1.19.0-SNAPSHOT</version>
</parent> </parent>
<artifactId>data-transfer-object</artifactId> <artifactId>data-transfer-object</artifactId>
<dependencies> <dependencies>

View File

@ -116,6 +116,9 @@ Use Decorator
* For responsibilities that can be withdrawn * For responsibilities that can be withdrawn
* When extension by subclassing is impractical. Sometimes a large number of independent extensions are possible and would produce an explosion of subclasses to support every combination. Or a class definition may be hidden or otherwise unavailable for subclassing * When extension by subclassing is impractical. Sometimes a large number of independent extensions are possible and would produce an explosion of subclasses to support every combination. Or a class definition may be hidden or otherwise unavailable for subclassing
## Tutorial
* [Decorator Pattern Tutorial](https://www.journaldev.com/1540/decorator-design-pattern-in-java-example)
## Real world examples ## Real world examples
* [java.io.InputStream](http://docs.oracle.com/javase/8/docs/api/java/io/InputStream.html), [java.io.OutputStream](http://docs.oracle.com/javase/8/docs/api/java/io/OutputStream.html), * [java.io.InputStream](http://docs.oracle.com/javase/8/docs/api/java/io/InputStream.html), [java.io.OutputStream](http://docs.oracle.com/javase/8/docs/api/java/io/OutputStream.html),
[java.io.Reader](http://docs.oracle.com/javase/8/docs/api/java/io/Reader.html) and [java.io.Writer](http://docs.oracle.com/javase/8/docs/api/java/io/Writer.html) [java.io.Reader](http://docs.oracle.com/javase/8/docs/api/java/io/Reader.html) and [java.io.Writer](http://docs.oracle.com/javase/8/docs/api/java/io/Writer.html)

View File

@ -29,7 +29,7 @@
<parent> <parent>
<groupId>com.iluwatar</groupId> <groupId>com.iluwatar</groupId>
<artifactId>java-design-patterns</artifactId> <artifactId>java-design-patterns</artifactId>
<version>1.18.0</version> <version>1.19.0-SNAPSHOT</version>
</parent> </parent>
<artifactId>decorator</artifactId> <artifactId>decorator</artifactId>
<dependencies> <dependencies>

View File

@ -30,7 +30,7 @@
<parent> <parent>
<artifactId>java-design-patterns</artifactId> <artifactId>java-design-patterns</artifactId>
<groupId>com.iluwatar</groupId> <groupId>com.iluwatar</groupId>
<version>1.18.0</version> <version>1.19.0-SNAPSHOT</version>
</parent> </parent>
<modelVersion>4.0.0</modelVersion> <modelVersion>4.0.0</modelVersion>

View File

@ -29,7 +29,7 @@
<parent> <parent>
<groupId>com.iluwatar</groupId> <groupId>com.iluwatar</groupId>
<artifactId>java-design-patterns</artifactId> <artifactId>java-design-patterns</artifactId>
<version>1.18.0</version> <version>1.19.0-SNAPSHOT</version>
</parent> </parent>
<artifactId>dependency-injection</artifactId> <artifactId>dependency-injection</artifactId>
<dependencies> <dependencies>

View File

@ -27,7 +27,7 @@
<parent> <parent>
<groupId>com.iluwatar</groupId> <groupId>com.iluwatar</groupId>
<artifactId>java-design-patterns</artifactId> <artifactId>java-design-patterns</artifactId>
<version>1.18.0</version> <version>1.19.0-SNAPSHOT</version>
</parent> </parent>
<artifactId>double-checked-locking</artifactId> <artifactId>double-checked-locking</artifactId>
<dependencies> <dependencies>

View File

@ -29,7 +29,7 @@
<parent> <parent>
<groupId>com.iluwatar</groupId> <groupId>com.iluwatar</groupId>
<artifactId>java-design-patterns</artifactId> <artifactId>java-design-patterns</artifactId>
<version>1.18.0</version> <version>1.19.0-SNAPSHOT</version>
</parent> </parent>
<artifactId>double-dispatch</artifactId> <artifactId>double-dispatch</artifactId>
<dependencies> <dependencies>

View File

@ -26,7 +26,7 @@
<parent> <parent>
<groupId>com.iluwatar</groupId> <groupId>com.iluwatar</groupId>
<artifactId>java-design-patterns</artifactId> <artifactId>java-design-patterns</artifactId>
<version>1.18.0</version> <version>1.19.0-SNAPSHOT</version>
</parent> </parent>
<dependencies> <dependencies>

View File

@ -26,7 +26,7 @@
<parent> <parent>
<groupId>com.iluwatar</groupId> <groupId>com.iluwatar</groupId>
<artifactId>java-design-patterns</artifactId> <artifactId>java-design-patterns</artifactId>
<version>1.18.0</version> <version>1.19.0-SNAPSHOT</version>
</parent> </parent>
<dependencies> <dependencies>

View File

@ -26,7 +26,7 @@
<parent> <parent>
<groupId>com.iluwatar</groupId> <groupId>com.iluwatar</groupId>
<artifactId>java-design-patterns</artifactId> <artifactId>java-design-patterns</artifactId>
<version>1.18.0</version> <version>1.19.0-SNAPSHOT</version>
</parent> </parent>
<dependencies> <dependencies>

View File

@ -28,7 +28,7 @@
<parent> <parent>
<groupId>com.iluwatar</groupId> <groupId>com.iluwatar</groupId>
<artifactId>java-design-patterns</artifactId> <artifactId>java-design-patterns</artifactId>
<version>1.18.0</version> <version>1.19.0-SNAPSHOT</version>
</parent> </parent>
<artifactId>event-aggregator</artifactId> <artifactId>event-aggregator</artifactId>
<dependencies> <dependencies>

View File

@ -30,7 +30,6 @@ package com.iluwatar.event.aggregator;
public class KingsHand extends EventEmitter implements EventObserver { public class KingsHand extends EventEmitter implements EventObserver {
public KingsHand() { public KingsHand() {
super();
} }
public KingsHand(EventObserver obs) { public KingsHand(EventObserver obs) {

View File

@ -30,7 +30,6 @@ package com.iluwatar.event.aggregator;
public class LordBaelish extends EventEmitter { public class LordBaelish extends EventEmitter {
public LordBaelish() { public LordBaelish() {
super();
} }
public LordBaelish(EventObserver obs) { public LordBaelish(EventObserver obs) {

View File

@ -30,7 +30,6 @@ package com.iluwatar.event.aggregator;
public class LordVarys extends EventEmitter { public class LordVarys extends EventEmitter {
public LordVarys() { public LordVarys() {
super();
} }
public LordVarys(EventObserver obs) { public LordVarys(EventObserver obs) {

View File

@ -30,7 +30,6 @@ package com.iluwatar.event.aggregator;
public class Scout extends EventEmitter { public class Scout extends EventEmitter {
public Scout() { public Scout() {
super();
} }
public Scout(EventObserver obs) { public Scout(EventObserver obs) {

View File

@ -29,7 +29,7 @@
<parent> <parent>
<groupId>com.iluwatar</groupId> <groupId>com.iluwatar</groupId>
<artifactId>java-design-patterns</artifactId> <artifactId>java-design-patterns</artifactId>
<version>1.18.0</version> <version>1.19.0-SNAPSHOT</version>
</parent> </parent>
<artifactId>event-asynchronous</artifactId> <artifactId>event-asynchronous</artifactId>
<dependencies> <dependencies>

View File

@ -31,7 +31,7 @@
<parent> <parent>
<groupId>com.iluwatar</groupId> <groupId>com.iluwatar</groupId>
<artifactId>java-design-patterns</artifactId> <artifactId>java-design-patterns</artifactId>
<version>1.18.0</version> <version>1.19.0-SNAPSHOT</version>
</parent> </parent>
<artifactId>event-driven-architecture</artifactId> <artifactId>event-driven-architecture</artifactId>

View File

@ -33,7 +33,7 @@ import com.iluwatar.eda.model.User;
/** /**
* An event-driven architecture (EDA) is a framework that orchestrates behavior around the * An event-driven architecture (EDA) is a framework that orchestrates behavior around the
* production, detection and consumption of events as well as the responses they evoke. An event is * production, detection and consumption of events as well as the responses they evoke. An event is
* any identifiable occurrence that has significance for system hardware or software. <p/> The * any identifiable occurrence that has significance for system hardware or software. <p> The
* example below uses an {@link EventDispatcher} to link/register {@link Event} objects to their * example below uses an {@link EventDispatcher} to link/register {@link Event} objects to their
* respective handlers once an {@link Event} is dispatched, it's respective handler is invoked and * respective handlers once an {@link Event} is dispatched, it's respective handler is invoked and
* the {@link Event} is handled accordingly. * the {@link Event} is handled accordingly.

View File

@ -30,7 +30,7 @@
<parent> <parent>
<artifactId>java-design-patterns</artifactId> <artifactId>java-design-patterns</artifactId>
<groupId>com.iluwatar</groupId> <groupId>com.iluwatar</groupId>
<version>1.18.0</version> <version>1.19.0-SNAPSHOT</version>
</parent> </parent>
<artifactId>event-queue</artifactId> <artifactId>event-queue</artifactId>
<dependencies> <dependencies>

View File

@ -59,7 +59,7 @@ public class Audio {
} }
/** /**
* This method stops the Update Method's thread. * This method check the Update Method's thread is started.
* @return boolean * @return boolean
*/ */
public static synchronized boolean isServiceRunning() { public static synchronized boolean isServiceRunning() {

View File

@ -30,7 +30,7 @@
<parent> <parent>
<artifactId>java-design-patterns</artifactId> <artifactId>java-design-patterns</artifactId>
<groupId>com.iluwatar</groupId> <groupId>com.iluwatar</groupId>
<version>1.18.0</version> <version>1.19.0-SNAPSHOT</version>
</parent> </parent>
<artifactId>event-sourcing</artifactId> <artifactId>event-sourcing</artifactId>
<dependencies> <dependencies>

View File

@ -29,7 +29,7 @@
<parent> <parent>
<groupId>com.iluwatar</groupId> <groupId>com.iluwatar</groupId>
<artifactId>java-design-patterns</artifactId> <artifactId>java-design-patterns</artifactId>
<version>1.18.0</version> <version>1.19.0-SNAPSHOT</version>
</parent> </parent>
<artifactId>execute-around</artifactId> <artifactId>execute-around</artifactId>
<dependencies> <dependencies>

View File

@ -29,7 +29,7 @@
<parent> <parent>
<artifactId>java-design-patterns</artifactId> <artifactId>java-design-patterns</artifactId>
<groupId>com.iluwatar</groupId> <groupId>com.iluwatar</groupId>
<version>1.18.0</version> <version>1.19.0-SNAPSHOT</version>
</parent> </parent>
<modelVersion>4.0.0</modelVersion> <modelVersion>4.0.0</modelVersion>

View File

@ -29,7 +29,7 @@
<parent> <parent>
<groupId>com.iluwatar</groupId> <groupId>com.iluwatar</groupId>
<artifactId>java-design-patterns</artifactId> <artifactId>java-design-patterns</artifactId>
<version>1.18.0</version> <version>1.19.0-SNAPSHOT</version>
</parent> </parent>
<artifactId>facade</artifactId> <artifactId>facade</artifactId>
<dependencies> <dependencies>

View File

@ -30,7 +30,7 @@
<parent> <parent>
<groupId>com.iluwatar</groupId> <groupId>com.iluwatar</groupId>
<artifactId>java-design-patterns</artifactId> <artifactId>java-design-patterns</artifactId>
<version>1.18.0</version> <version>1.19.0-SNAPSHOT</version>
</parent> </parent>
<artifactId>factory-kit</artifactId> <artifactId>factory-kit</artifactId>
<dependencies> <dependencies>

View File

@ -45,7 +45,7 @@ public class App {
/** /**
* Program entry point. * Program entry point.
* *
* @param args @param args command line args * @param args command line args
*/ */
public static void main(String[] args) { public static void main(String[] args) {
WeaponFactory factory = WeaponFactory.factory(builder -> { WeaponFactory factory = WeaponFactory.factory(builder -> {

View File

@ -29,7 +29,7 @@
<parent> <parent>
<groupId>com.iluwatar</groupId> <groupId>com.iluwatar</groupId>
<artifactId>java-design-patterns</artifactId> <artifactId>java-design-patterns</artifactId>
<version>1.18.0</version> <version>1.19.0-SNAPSHOT</version>
</parent> </parent>
<artifactId>factory-method</artifactId> <artifactId>factory-method</artifactId>
<dependencies> <dependencies>

View File

@ -30,7 +30,7 @@
<parent> <parent>
<artifactId>java-design-patterns</artifactId> <artifactId>java-design-patterns</artifactId>
<groupId>com.iluwatar</groupId> <groupId>com.iluwatar</groupId>
<version>1.18.0</version> <version>1.19.0-SNAPSHOT</version>
</parent> </parent>
<modelVersion>4.0.0</modelVersion> <modelVersion>4.0.0</modelVersion>

View File

@ -67,7 +67,7 @@ public class App {
* @see UserGroup * @see UserGroup
* @see Service * @see Service
* @see PropertiesFeatureToggleVersion * @see PropertiesFeatureToggleVersion
* @see com.iluwatar.featuretoggle.pattern.tieredversion.TieredFeatureToggleVersion; * @see com.iluwatar.featuretoggle.pattern.tieredversion.TieredFeatureToggleVersion
*/ */
public static void main(String[] args) { public static void main(String[] args) {

View File

@ -47,7 +47,7 @@ public interface Service {
/** /**
* Returns if the welcome message to be displayed will be the enhanced version. * Returns if the welcome message to be displayed will be the enhanced version.
* *
* @return Boolean {@value true} if enhanced. * @return Boolean {@code true} if enhanced.
*/ */
boolean isEnhanced(); boolean isEnhanced();

View File

@ -91,7 +91,7 @@ public class PropertiesFeatureToggleVersion implements Service {
* see the value of the boolean that was set in the constructor * see the value of the boolean that was set in the constructor
* {@link PropertiesFeatureToggleVersion#PropertiesFeatureToggleVersion(Properties)} * {@link PropertiesFeatureToggleVersion#PropertiesFeatureToggleVersion(Properties)}
* *
* @return Boolean value {@value true} if enhanced. * @return Boolean value {@code true} if enhanced.
*/ */
@Override @Override
public boolean isEnhanced() { public boolean isEnhanced() {

View File

@ -65,7 +65,7 @@ public class TieredFeatureToggleVersion implements Service {
* is driven by the user group. This method is a little redundant. However can be used to show that there is an * is driven by the user group. This method is a little redundant. However can be used to show that there is an
* enhanced version available. * enhanced version available.
* *
* @return Boolean value {@value true} if enhanced. * @return Boolean value {@code true} if enhanced.
*/ */
@Override @Override
public boolean isEnhanced() { public boolean isEnhanced() {

View File

@ -29,7 +29,7 @@
<parent> <parent>
<artifactId>java-design-patterns</artifactId> <artifactId>java-design-patterns</artifactId>
<groupId>com.iluwatar</groupId> <groupId>com.iluwatar</groupId>
<version>1.18.0</version> <version>1.19.0-SNAPSHOT</version>
</parent> </parent>
<modelVersion>4.0.0</modelVersion> <modelVersion>4.0.0</modelVersion>

View File

@ -29,7 +29,7 @@
<parent> <parent>
<groupId>com.iluwatar</groupId> <groupId>com.iluwatar</groupId>
<artifactId>java-design-patterns</artifactId> <artifactId>java-design-patterns</artifactId>
<version>1.18.0</version> <version>1.19.0-SNAPSHOT</version>
</parent> </parent>
<artifactId>flux</artifactId> <artifactId>flux</artifactId>
<dependencies> <dependencies>

View File

@ -29,7 +29,7 @@
<parent> <parent>
<groupId>com.iluwatar</groupId> <groupId>com.iluwatar</groupId>
<artifactId>java-design-patterns</artifactId> <artifactId>java-design-patterns</artifactId>
<version>1.18.0</version> <version>1.19.0-SNAPSHOT</version>
</parent> </parent>
<artifactId>flyweight</artifactId> <artifactId>flyweight</artifactId>
<dependencies> <dependencies>

View File

@ -30,7 +30,7 @@
<parent> <parent>
<groupId>com.iluwatar</groupId> <groupId>com.iluwatar</groupId>
<artifactId>java-design-patterns</artifactId> <artifactId>java-design-patterns</artifactId>
<version>1.18.0</version> <version>1.19.0-SNAPSHOT</version>
</parent> </parent>
<artifactId>front-controller</artifactId> <artifactId>front-controller</artifactId>
<dependencies> <dependencies>

View File

@ -30,7 +30,7 @@
<parent> <parent>
<groupId>com.iluwatar</groupId> <groupId>com.iluwatar</groupId>
<artifactId>java-design-patterns</artifactId> <artifactId>java-design-patterns</artifactId>
<version>1.18.0</version> <version>1.19.0-SNAPSHOT</version>
</parent> </parent>
<packaging>jar</packaging> <packaging>jar</packaging>
<artifactId>guarded-suspension</artifactId> <artifactId>guarded-suspension</artifactId>

View File

@ -32,7 +32,7 @@ import java.util.Queue;
* Guarded Queue is an implementation for Guarded Suspension Pattern * Guarded Queue is an implementation for Guarded Suspension Pattern
* Guarded suspension pattern is used to handle a situation when you want to execute a method * Guarded suspension pattern is used to handle a situation when you want to execute a method
* on an object which is not in a proper state. * on an object which is not in a proper state.
* @see http://java-design-patterns.com/patterns/guarded-suspension/ * @see <a href="http://java-design-patterns.com/patterns/guarded-suspension/">http://java-design-patterns.com/patterns/guarded-suspension/</a>
*/ */
public class GuardedQueue { public class GuardedQueue {
private static final Logger LOGGER = LoggerFactory.getLogger(GuardedQueue.class); private static final Logger LOGGER = LoggerFactory.getLogger(GuardedQueue.class);

View File

@ -29,7 +29,7 @@
<parent> <parent>
<groupId>com.iluwatar</groupId> <groupId>com.iluwatar</groupId>
<artifactId>java-design-patterns</artifactId> <artifactId>java-design-patterns</artifactId>
<version>1.18.0</version> <version>1.19.0-SNAPSHOT</version>
</parent> </parent>
<artifactId>half-sync-half-async</artifactId> <artifactId>half-sync-half-async</artifactId>
<dependencies> <dependencies>

View File

@ -33,31 +33,31 @@ import java.util.concurrent.LinkedBlockingQueue;
* {@link AsyncTask} and {@link AsynchronousService}. * {@link AsyncTask} and {@link AsynchronousService}.
* *
* <p> * <p>
* <i>PROBLEM</i> <br/> * <i>PROBLEM</i> <br>
* A concurrent system have a mixture of short duration, mid duration and long duration tasks. Mid * A concurrent system have a mixture of short duration, mid duration and long duration tasks. Mid
* or long duration tasks should be performed asynchronously to meet quality of service * or long duration tasks should be performed asynchronously to meet quality of service
* requirements. * requirements.
* *
* <p> * <p>
* <i>INTENT</i> <br/> * <i>INTENT</i> <br>
* The intent of this pattern is to separate the the synchronous and asynchronous processing in the * The intent of this pattern is to separate the the synchronous and asynchronous processing in the
* concurrent application by introducing two intercommunicating layers - one for sync and one for * concurrent application by introducing two intercommunicating layers - one for sync and one for
* async. This simplifies the programming without unduly affecting the performance. * async. This simplifies the programming without unduly affecting the performance.
* *
* <p> * <p>
* <i>APPLICABILITY</i> <br/> * <i>APPLICABILITY</i> <br>
* UNIX network subsystems - In operating systems network operations are carried out * UNIX network subsystems - In operating systems network operations are carried out
* asynchronously with help of hardware level interrupts.<br/> * asynchronously with help of hardware level interrupts.<br>
* CORBA - At the asynchronous layer one thread is associated with each socket that is connected * CORBA - At the asynchronous layer one thread is associated with each socket that is connected
* to the client. Thread blocks waiting for CORBA requests from the client. On receiving request it * to the client. Thread blocks waiting for CORBA requests from the client. On receiving request it
* is inserted in the queuing layer which is then picked up by synchronous layer which processes the * is inserted in the queuing layer which is then picked up by synchronous layer which processes the
* request and sends response back to the client.<br/> * request and sends response back to the client.<br>
* Android AsyncTask framework - Framework provides a way to execute long running blocking * Android AsyncTask framework - Framework provides a way to execute long running blocking
* calls, such as downloading a file, in background threads so that the UI thread remains free to * calls, such as downloading a file, in background threads so that the UI thread remains free to
* respond to user inputs.<br/> * respond to user inputs.<br>
* *
* <p> * <p>
* <i>IMPLEMENTATION</i> <br/> * <i>IMPLEMENTATION</i> <br>
* The main method creates an asynchronous service which does not block the main thread while the * The main method creates an asynchronous service which does not block the main thread while the
* task is being performed. The main thread continues its work which is similar to Async Method * task is being performed. The main thread continues its work which is similar to Async Method
* Invocation pattern. The difference between them is that there is a queuing layer between * Invocation pattern. The difference between them is that there is a queuing layer between

View File

@ -30,7 +30,7 @@
<parent> <parent>
<groupId>com.iluwatar</groupId> <groupId>com.iluwatar</groupId>
<artifactId>java-design-patterns</artifactId> <artifactId>java-design-patterns</artifactId>
<version>1.18.0</version> <version>1.19.0-SNAPSHOT</version>
</parent> </parent>
<artifactId>hexagonal</artifactId> <artifactId>hexagonal</artifactId>
<dependencies> <dependencies>

View File

@ -50,13 +50,13 @@ import com.iluwatar.hexagonal.sampledata.SampleData;
* from the services it uses.<p> * from the services it uses.<p>
* *
* The primary ports for the application are console interfaces * The primary ports for the application are console interfaces
* {@link ConsoleAdministration} through which the lottery round is * {@link com.iluwatar.hexagonal.administration.ConsoleAdministration} through which the lottery round is
* initiated and run and {@link ConsoleLottery} that allows players to * initiated and run and {@link com.iluwatar.hexagonal.service.ConsoleLottery} that allows players to
* submit lottery tickets for the draw.<p> * submit lottery tickets for the draw.<p>
* *
* The secondary ports that application core uses are {@link WireTransfers} * The secondary ports that application core uses are {@link com.iluwatar.hexagonal.banking.WireTransfers}
* which is a banking service, {@link LotteryEventLog} that delivers * which is a banking service, {@link com.iluwatar.hexagonal.eventlog.LotteryEventLog} that delivers
* eventlog as lottery events occur and {@link LotteryTicketRepository} * eventlog as lottery events occur and {@link com.iluwatar.hexagonal.database.LotteryTicketRepository}
* that is the storage for the lottery tickets. * that is the storage for the lottery tickets.
* *
*/ */

View File

@ -29,7 +29,7 @@
<parent> <parent>
<groupId>com.iluwatar</groupId> <groupId>com.iluwatar</groupId>
<artifactId>java-design-patterns</artifactId> <artifactId>java-design-patterns</artifactId>
<version>1.18.0</version> <version>1.19.0-SNAPSHOT</version>
</parent> </parent>
<artifactId>intercepting-filter</artifactId> <artifactId>intercepting-filter</artifactId>
<dependencies> <dependencies>

View File

@ -29,7 +29,7 @@
<parent> <parent>
<groupId>com.iluwatar</groupId> <groupId>com.iluwatar</groupId>
<artifactId>java-design-patterns</artifactId> <artifactId>java-design-patterns</artifactId>
<version>1.18.0</version> <version>1.19.0-SNAPSHOT</version>
</parent> </parent>
<artifactId>interpreter</artifactId> <artifactId>interpreter</artifactId>
<dependencies> <dependencies>

View File

@ -23,6 +23,7 @@
package com.iluwatar.interpreter; package com.iluwatar.interpreter;
import org.junit.jupiter.api.Disabled; import org.junit.jupiter.api.Disabled;
import org.junit.jupiter.api.TestInstance;
import org.junit.jupiter.params.ParameterizedTest; import org.junit.jupiter.params.ParameterizedTest;
import org.junit.jupiter.params.provider.Arguments; import org.junit.jupiter.params.provider.Arguments;
import org.junit.jupiter.params.provider.MethodSource; import org.junit.jupiter.params.provider.MethodSource;
@ -43,6 +44,7 @@ import static org.junit.jupiter.api.Assertions.assertNotNull;
* @param <E> Type of Expression * @param <E> Type of Expression
* @author Jeroen Meulemeester * @author Jeroen Meulemeester
*/ */
@TestInstance(TestInstance.Lifecycle.PER_CLASS)
public abstract class ExpressionTest<E extends Expression> { public abstract class ExpressionTest<E extends Expression> {
/** /**
@ -88,6 +90,13 @@ public abstract class ExpressionTest<E extends Expression> {
this.factory = factory; this.factory = factory;
} }
/**
* Create a new set of test entries with the expected result
*
* @return The list of parameters used during this test
*/
public abstract Stream<Arguments> expressionProvider();
/** /**
* Verify if the expression calculates the correct result when calling {@link E#interpret()} * Verify if the expression calculates the correct result when calling {@link E#interpret()}
*/ */

View File

@ -38,7 +38,8 @@ public class MinusExpressionTest extends ExpressionTest<MinusExpression> {
* *
* @return The list of parameters used during this test * @return The list of parameters used during this test
*/ */
public static Stream<Arguments> expressionProvider() { @Override
public Stream<Arguments> expressionProvider() {
return prepareParameters((f, s) -> f - s); return prepareParameters((f, s) -> f - s);
} }

View File

@ -38,7 +38,8 @@ public class MultiplyExpressionTest extends ExpressionTest<MultiplyExpression> {
* *
* @return The list of parameters used during this test * @return The list of parameters used during this test
*/ */
public static Stream<Arguments> expressionProvider() { @Override
public Stream<Arguments> expressionProvider() {
return prepareParameters((f, s) -> f * s); return prepareParameters((f, s) -> f * s);
} }

View File

@ -42,7 +42,8 @@ public class NumberExpressionTest extends ExpressionTest<NumberExpression> {
* *
* @return The list of parameters used during this test * @return The list of parameters used during this test
*/ */
public static Stream<Arguments> expressionProvider() { @Override
public Stream<Arguments> expressionProvider() {
return prepareParameters((f, s) -> f); return prepareParameters((f, s) -> f);
} }

View File

@ -38,7 +38,8 @@ public class PlusExpressionTest extends ExpressionTest<PlusExpression> {
* *
* @return The list of parameters used during this test * @return The list of parameters used during this test
*/ */
public static Stream<Arguments> expressionProvider() { @Override
public Stream<Arguments> expressionProvider() {
return prepareParameters((f, s) -> f + s); return prepareParameters((f, s) -> f + s);
} }

View File

@ -29,7 +29,7 @@
<parent> <parent>
<groupId>com.iluwatar</groupId> <groupId>com.iluwatar</groupId>
<artifactId>java-design-patterns</artifactId> <artifactId>java-design-patterns</artifactId>
<version>1.18.0</version> <version>1.19.0-SNAPSHOT</version>
</parent> </parent>
<artifactId>iterator</artifactId> <artifactId>iterator</artifactId>
<dependencies> <dependencies>

View File

@ -30,7 +30,7 @@
<parent> <parent>
<groupId>com.iluwatar</groupId> <groupId>com.iluwatar</groupId>
<artifactId>java-design-patterns</artifactId> <artifactId>java-design-patterns</artifactId>
<version>1.18.0</version> <version>1.19.0-SNAPSHOT</version>
</parent> </parent>
<groupId>com.iluwatar.layers</groupId> <groupId>com.iluwatar.layers</groupId>
<artifactId>layers</artifactId> <artifactId>layers</artifactId>

View File

@ -29,7 +29,7 @@
<parent> <parent>
<groupId>com.iluwatar</groupId> <groupId>com.iluwatar</groupId>
<artifactId>java-design-patterns</artifactId> <artifactId>java-design-patterns</artifactId>
<version>1.18.0</version> <version>1.19.0-SNAPSHOT</version>
</parent> </parent>
<artifactId>lazy-loading</artifactId> <artifactId>lazy-loading</artifactId>
<dependencies> <dependencies>

View File

@ -24,7 +24,7 @@
<parent> <parent>
<artifactId>java-design-patterns</artifactId> <artifactId>java-design-patterns</artifactId>
<groupId>com.iluwatar</groupId> <groupId>com.iluwatar</groupId>
<version>1.18.0</version> <version>1.19.0-SNAPSHOT</version>
</parent> </parent>
<modelVersion>4.0.0</modelVersion> <modelVersion>4.0.0</modelVersion>

View File

@ -29,7 +29,7 @@
<parent> <parent>
<groupId>com.iluwatar</groupId> <groupId>com.iluwatar</groupId>
<artifactId>java-design-patterns</artifactId> <artifactId>java-design-patterns</artifactId>
<version>1.18.0</version> <version>1.19.0-SNAPSHOT</version>
</parent> </parent>
<artifactId>mediator</artifactId> <artifactId>mediator</artifactId>
<dependencies> <dependencies>

Some files were not shown because too many files have changed in this diff Show More