Skip to content

Commit 7a13012

Browse files
Merge branch 'master' of github.com:iluwatar/java-design-patterns
2 parents c3b102e + 1c0e0cd commit 7a13012

File tree

134 files changed

+210
-162
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

134 files changed

+210
-162
lines changed

README.md

+1-1
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@
77
[![Build status](https://travis-ci.org/iluwatar/java-design-patterns.svg?branch=master)](https://travis-ci.org/iluwatar/java-design-patterns)
88
[![License MIT](https://img.shields.io/badge/license-MIT-blue.svg)](https://raw.githubusercontent.com/iluwatar/java-design-patterns/master/LICENSE.md)
99
[![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)
10-
[![Quality Gate](https://sonarcloud.io/api/badges/gate?key=com.iluwatar%3Ajava-design-patterns)](https://sonarcloud.io/dashboard/index/com.iluwatar%3Ajava-design-patterns)
10+
[![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)
1111
[![CII Best Practices](https://bestpractices.coreinfrastructure.org/projects/1503/badge)](https://bestpractices.coreinfrastructure.org/projects/1503)
1212

1313
# Introduction

abstract-document/pom.xml

+1-1
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,7 @@
2929
<parent>
3030
<artifactId>java-design-patterns</artifactId>
3131
<groupId>com.iluwatar</groupId>
32-
<version>1.19.0-SNAPSHOT</version>
32+
<version>1.20.0-SNAPSHOT</version>
3333
</parent>
3434
<artifactId>abstract-document</artifactId>
3535
<dependencies>

abstract-factory/README.md

+4-4
Original file line numberDiff line numberDiff line change
@@ -34,7 +34,7 @@ Wikipedia says
3434

3535
Translating the kingdom example above. First of all we have some interfaces and implementation for the objects in the kingdom
3636

37-
```
37+
```java
3838
public interface Castle {
3939
String getDescription();
4040
}
@@ -74,7 +74,7 @@ public class ElfArmy implements Army {
7474

7575
Then we have the abstraction and implementations for the kingdom factory
7676

77-
```
77+
```java
7878
public interface KingdomFactory {
7979
Castle createCastle();
8080
King createKing();
@@ -108,7 +108,7 @@ public class OrcKingdomFactory implements KingdomFactory {
108108

109109
Now we have our abstract factory that lets us make family of related objects i.e. Elven kingdom factory creates Elven castle, king and army etc.
110110

111-
```
111+
```java
112112
KingdomFactory factory = new ElfKingdomFactory();
113113
Castle castle = factory.createCastle();
114114
King king = factory.createKing();
@@ -123,7 +123,7 @@ Now, we can design a factory for our different kingdom factories. In this exampl
123123
The client can use FactoryMaker to create the desired concrete factory which, in turn, will produce different concrete objects (Army, King, Castle).
124124
In this example, we also used an enum to parameterize which type of kingdom factory the client will ask for.
125125

126-
```
126+
```java
127127
public static class FactoryMaker {
128128

129129
public enum KingdomType {

abstract-factory/pom.xml

+1-1
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,7 @@
2929
<parent>
3030
<groupId>com.iluwatar</groupId>
3131
<artifactId>java-design-patterns</artifactId>
32-
<version>1.19.0-SNAPSHOT</version>
32+
<version>1.20.0-SNAPSHOT</version>
3333
</parent>
3434
<artifactId>abstract-factory</artifactId>
3535
<dependencies>

adapter/README.md

+4-4
Original file line numberDiff line numberDiff line change
@@ -40,7 +40,7 @@ Consider a captain that can only use rowing boats and cannot sail at all.
4040

4141
First we have interfaces `RowingBoat` and `FishingBoat`
4242

43-
```
43+
```java
4444
public interface RowingBoat {
4545
void row();
4646
}
@@ -55,7 +55,7 @@ public class FishingBoat {
5555

5656
And captain expects an implementation of `RowingBoat` interface to be able to move
5757

58-
```
58+
```java
5959
public class Captain implements RowingBoat {
6060

6161
private RowingBoat rowingBoat;
@@ -73,7 +73,7 @@ public class Captain implements RowingBoat {
7373

7474
Now let's say the pirates are coming and our captain needs to escape but there is only fishing boat available. We need to create an adapter that allows the captain to operate the fishing boat with his rowing boat skills.
7575

76-
```
76+
```java
7777
public class FishingBoatAdapter implements RowingBoat {
7878

7979
private static final Logger LOGGER = LoggerFactory.getLogger(FishingBoatAdapter.class);
@@ -93,7 +93,7 @@ public class FishingBoatAdapter implements RowingBoat {
9393

9494
And now the `Captain` can use the `FishingBoat` to escape the pirates.
9595

96-
```
96+
```java
9797
Captain captain = new Captain(new FishingBoatAdapter());
9898
captain.row();
9999
```

adapter/pom.xml

+1-1
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,7 @@
2929
<parent>
3030
<groupId>com.iluwatar</groupId>
3131
<artifactId>java-design-patterns</artifactId>
32-
<version>1.19.0-SNAPSHOT</version>
32+
<version>1.20.0-SNAPSHOT</version>
3333
</parent>
3434
<artifactId>adapter</artifactId>
3535
<dependencies>

aggregator-microservices/aggregator-service/pom.xml

+1-1
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,7 @@
2929
<parent>
3030
<artifactId>aggregator-microservices</artifactId>
3131
<groupId>com.iluwatar</groupId>
32-
<version>1.19.0-SNAPSHOT</version>
32+
<version>1.20.0-SNAPSHOT</version>
3333
</parent>
3434
<modelVersion>4.0.0</modelVersion>
3535

aggregator-microservices/information-microservice/pom.xml

+1-1
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,7 @@
2929
<parent>
3030
<artifactId>aggregator-microservices</artifactId>
3131
<groupId>com.iluwatar</groupId>
32-
<version>1.19.0-SNAPSHOT</version>
32+
<version>1.20.0-SNAPSHOT</version>
3333
</parent>
3434
<modelVersion>4.0.0</modelVersion>
3535

aggregator-microservices/inventory-microservice/pom.xml

+1-1
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,7 @@
2929
<parent>
3030
<artifactId>aggregator-microservices</artifactId>
3131
<groupId>com.iluwatar</groupId>
32-
<version>1.19.0-SNAPSHOT</version>
32+
<version>1.20.0-SNAPSHOT</version>
3333
</parent>
3434
<modelVersion>4.0.0</modelVersion>
3535

aggregator-microservices/pom.xml

+1-1
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,7 @@
2929
<parent>
3030
<artifactId>java-design-patterns</artifactId>
3131
<groupId>com.iluwatar</groupId>
32-
<version>1.19.0-SNAPSHOT</version>
32+
<version>1.20.0-SNAPSHOT</version>
3333
</parent>
3434
<modelVersion>4.0.0</modelVersion>
3535
<artifactId>aggregator-microservices</artifactId>

api-gateway/api-gateway-service/pom.xml

+1-1
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,7 @@
2929
<parent>
3030
<artifactId>api-gateway</artifactId>
3131
<groupId>com.iluwatar</groupId>
32-
<version>1.19.0-SNAPSHOT</version>
32+
<version>1.20.0-SNAPSHOT</version>
3333
</parent>
3434
<modelVersion>4.0.0</modelVersion>
3535
<artifactId>api-gateway-service</artifactId>

api-gateway/image-microservice/pom.xml

+1-1
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,7 @@
2929
<parent>
3030
<artifactId>api-gateway</artifactId>
3131
<groupId>com.iluwatar</groupId>
32-
<version>1.19.0-SNAPSHOT</version>
32+
<version>1.20.0-SNAPSHOT</version>
3333
</parent>
3434

3535
<modelVersion>4.0.0</modelVersion>

api-gateway/pom.xml

+1-1
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,7 @@
2929
<parent>
3030
<artifactId>java-design-patterns</artifactId>
3131
<groupId>com.iluwatar</groupId>
32-
<version>1.19.0-SNAPSHOT</version>
32+
<version>1.20.0-SNAPSHOT</version>
3333
</parent>
3434
<modelVersion>4.0.0</modelVersion>
3535
<artifactId>api-gateway</artifactId>

api-gateway/price-microservice/pom.xml

+1-1
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,7 @@
2929
<parent>
3030
<artifactId>api-gateway</artifactId>
3131
<groupId>com.iluwatar</groupId>
32-
<version>1.19.0-SNAPSHOT</version>
32+
<version>1.20.0-SNAPSHOT</version>
3333
</parent>
3434

3535
<modelVersion>4.0.0</modelVersion>

async-method-invocation/pom.xml

+1-1
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,7 @@
2929
<parent>
3030
<groupId>com.iluwatar</groupId>
3131
<artifactId>java-design-patterns</artifactId>
32-
<version>1.19.0-SNAPSHOT</version>
32+
<version>1.20.0-SNAPSHOT</version>
3333
</parent>
3434
<artifactId>async-method-invocation</artifactId>
3535
<dependencies>

balking/pom.xml

+1-1
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,7 @@
2929
<parent>
3030
<artifactId>java-design-patterns</artifactId>
3131
<groupId>com.iluwatar</groupId>
32-
<version>1.19.0-SNAPSHOT</version>
32+
<version>1.20.0-SNAPSHOT</version>
3333
</parent>
3434
<modelVersion>4.0.0</modelVersion>
3535

balking/src/test/java/com/iluwatar/balking/WashingMachineTest.java

+2
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,7 @@
2222
*/
2323
package com.iluwatar.balking;
2424

25+
import org.junit.jupiter.api.Disabled;
2526
import org.junit.jupiter.api.Test;
2627

2728
import java.util.concurrent.ExecutorService;
@@ -37,6 +38,7 @@ public class WashingMachineTest {
3738

3839
private volatile WashingMachineState machineStateGlobal;
3940

41+
@Disabled
4042
@Test
4143
public void wash() throws Exception {
4244
WashingMachine washingMachine = new WashingMachine();

bridge/README.md

+3-3
Original file line numberDiff line numberDiff line change
@@ -34,7 +34,7 @@ Wikipedia says
3434

3535
Translating our weapon example from above. Here we have the `Weapon` hierarchy
3636

37-
```
37+
```java
3838
public interface Weapon {
3939
void wield();
4040
void swing();
@@ -109,7 +109,7 @@ public class Hammer implements Weapon {
109109

110110
And the separate enchantment hierarchy
111111

112-
```
112+
```java
113113
public interface Enchantment {
114114
void onActivate();
115115
void apply();
@@ -155,7 +155,7 @@ public class SoulEatingEnchantment implements Enchantment {
155155

156156
And both the hierarchies in action
157157

158-
```
158+
```java
159159
Sword enchantedSword = new Sword(new SoulEatingEnchantment());
160160
enchantedSword.wield();
161161
enchantedSword.swing();

bridge/pom.xml

+1-1
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,7 @@
2929
<parent>
3030
<groupId>com.iluwatar</groupId>
3131
<artifactId>java-design-patterns</artifactId>
32-
<version>1.19.0-SNAPSHOT</version>
32+
<version>1.20.0-SNAPSHOT</version>
3333
</parent>
3434
<artifactId>bridge</artifactId>
3535
<dependencies>

builder/README.md

+4-4
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,7 @@ Wikipedia says
3131
3232
Having said that let me add a bit about what telescoping constructor anti-pattern is. At one point or the other we have all seen a constructor like below:
3333

34-
```
34+
```java
3535
public Hero(Profession profession, String name, HairType hairType, HairColor hairColor, Armor armor, Weapon weapon) {
3636
}
3737
```
@@ -42,7 +42,7 @@ As you can see the number of constructor parameters can quickly get out of hand
4242

4343
The sane alternative is to use the Builder pattern. First of all we have our hero that we want to create
4444

45-
```
45+
```java
4646
public final class Hero {
4747
private final Profession profession;
4848
private final String name;
@@ -64,7 +64,7 @@ public final class Hero {
6464

6565
And then we have the builder
6666

67-
```
67+
```java
6868
public static class Builder {
6969
private final Profession profession;
7070
private final String name;
@@ -109,7 +109,7 @@ And then we have the builder
109109

110110
And then it can be used as:
111111

112-
```
112+
```java
113113
Hero mage = new Hero.Builder(Profession.MAGE, "Riobard").withHairColor(HairColor.BLACK).withWeapon(Weapon.DAGGER).build();
114114
```
115115

builder/pom.xml

+1-1
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,7 @@
2929
<parent>
3030
<groupId>com.iluwatar</groupId>
3131
<artifactId>java-design-patterns</artifactId>
32-
<version>1.19.0-SNAPSHOT</version>
32+
<version>1.20.0-SNAPSHOT</version>
3333
</parent>
3434
<artifactId>builder</artifactId>
3535
<dependencies>

business-delegate/pom.xml

+1-1
Original file line numberDiff line numberDiff line change
@@ -30,7 +30,7 @@
3030
<parent>
3131
<groupId>com.iluwatar</groupId>
3232
<artifactId>java-design-patterns</artifactId>
33-
<version>1.19.0-SNAPSHOT</version>
33+
<version>1.20.0-SNAPSHOT</version>
3434
</parent>
3535
<artifactId>business-delegate</artifactId>
3636
<dependencies>

caching/pom.xml

+1-1
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,7 @@
2929
<parent>
3030
<groupId>com.iluwatar</groupId>
3131
<artifactId>java-design-patterns</artifactId>
32-
<version>1.19.0-SNAPSHOT</version>
32+
<version>1.20.0-SNAPSHOT</version>
3333
</parent>
3434
<artifactId>caching</artifactId>
3535
<dependencies>

callback/pom.xml

+1-1
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,7 @@
2929
<parent>
3030
<groupId>com.iluwatar</groupId>
3131
<artifactId>java-design-patterns</artifactId>
32-
<version>1.19.0-SNAPSHOT</version>
32+
<version>1.20.0-SNAPSHOT</version>
3333
</parent>
3434
<artifactId>callback</artifactId>
3535
<dependencies>

chain/README.md

+4-4
Original file line numberDiff line numberDiff line change
@@ -33,7 +33,7 @@ Wikipedia says
3333

3434
Translating our example with orcs from above. First we have the request class
3535

36-
```
36+
```java
3737
public class Request {
3838

3939
private final RequestType requestType;
@@ -64,7 +64,7 @@ public enum RequestType {
6464

6565
Then the request handler hierarchy
6666

67-
```
67+
```java
6868
public abstract class RequestHandler {
6969
private static final Logger LOGGER = LoggerFactory.getLogger(RequestHandler.class);
7070
private RequestHandler next;
@@ -114,7 +114,7 @@ public class OrcCommander extends RequestHandler {
114114

115115
Then we have the Orc King who gives the orders and forms the chain
116116

117-
```
117+
```java
118118
public class OrcKing {
119119
RequestHandler chain;
120120

@@ -134,7 +134,7 @@ public class OrcKing {
134134

135135
Then it is used as follows
136136

137-
```
137+
```java
138138
OrcKing king = new OrcKing();
139139
king.makeRequest(new Request(RequestType.DEFEND_CASTLE, "defend castle")); // Orc commander handling request "defend castle"
140140
king.makeRequest(new Request(RequestType.TORTURE_PRISONER, "torture prisoner")); // Orc officer handling request "torture prisoner"

chain/pom.xml

+1-1
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,7 @@
2929
<parent>
3030
<groupId>com.iluwatar</groupId>
3131
<artifactId>java-design-patterns</artifactId>
32-
<version>1.19.0-SNAPSHOT</version>
32+
<version>1.20.0-SNAPSHOT</version>
3333
</parent>
3434
<artifactId>chain</artifactId>
3535
<dependencies>

command/pom.xml

+1-1
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,7 @@
2929
<parent>
3030
<groupId>com.iluwatar</groupId>
3131
<artifactId>java-design-patterns</artifactId>
32-
<version>1.19.0-SNAPSHOT</version>
32+
<version>1.20.0-SNAPSHOT</version>
3333
</parent>
3434
<artifactId>command</artifactId>
3535
<dependencies>

0 commit comments

Comments
 (0)