Compare commits
2 Commits
abstract-f
...
all-contri
Author | SHA1 | Date | |
---|---|---|---|
55918fea33 | |||
d01f5d2546 |
@ -1505,33 +1505,6 @@
|
|||||||
"contributions": [
|
"contributions": [
|
||||||
"code"
|
"code"
|
||||||
]
|
]
|
||||||
},
|
|
||||||
{
|
|
||||||
"login": "EdisonE3",
|
|
||||||
"name": "EdisonE3",
|
|
||||||
"avatar_url": "https://avatars.githubusercontent.com/u/52118917?v=4",
|
|
||||||
"profile": "https://github.com/EdisonE3",
|
|
||||||
"contributions": [
|
|
||||||
"code"
|
|
||||||
]
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"login": "tao-sun2",
|
|
||||||
"name": "Tao",
|
|
||||||
"avatar_url": "https://avatars.githubusercontent.com/u/66189688?v=4",
|
|
||||||
"profile": "https://github.com/tao-sun2",
|
|
||||||
"contributions": [
|
|
||||||
"code"
|
|
||||||
]
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"login": "JuanManuelAbate",
|
|
||||||
"name": "Juan Manuel Abate",
|
|
||||||
"avatar_url": "https://avatars.githubusercontent.com/u/16357060?v=4",
|
|
||||||
"profile": "https://github.com/JuanManuelAbate",
|
|
||||||
"contributions": [
|
|
||||||
"translation"
|
|
||||||
]
|
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
"contributorsPerLine": 4,
|
"contributorsPerLine": 4,
|
||||||
|
17
README.md
17
README.md
@ -6,16 +6,16 @@
|
|||||||
|
|
||||||

|

|
||||||
[](https://raw.githubusercontent.com/iluwatar/java-design-patterns/master/LICENSE.md)
|
[](https://raw.githubusercontent.com/iluwatar/java-design-patterns/master/LICENSE.md)
|
||||||
[](https://sonarcloud.io/dashboard?id=iluwatar_java-design-patterns)
|
[](https://sonarcloud.io/dashboard?id=iluwatar_java-design-patterns)
|
||||||
[](https://sonarcloud.io/dashboard?id=iluwatar_java-design-patterns)
|
[](https://sonarcloud.io/dashboard?id=iluwatar_java-design-patterns)
|
||||||
[](https://gitter.im/iluwatar/java-design-patterns?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge&utm_content=badge)
|
[](https://gitter.im/iluwatar/java-design-patterns?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge&utm_content=badge)
|
||||||
<!-- ALL-CONTRIBUTORS-BADGE:START - Do not remove or modify this section -->
|
<!-- ALL-CONTRIBUTORS-BADGE:START - Do not remove or modify this section -->
|
||||||
[](#contributors-)
|
[](#contributors-)
|
||||||
<!-- ALL-CONTRIBUTORS-BADGE:END -->
|
<!-- ALL-CONTRIBUTORS-BADGE:END -->
|
||||||
|
|
||||||
<br/>
|
<br/>
|
||||||
|
|
||||||
Read in different language : [**zh**](/localization/zh/README.md), [**ko**](/localization/ko/README.md), [**fr**](/localization/fr/README.md), [**tr**](/localization/tr/README.md), [**ar**](/localization/ar/README.md), [**es**](/localization/es/README.md)
|
Read in different language : [**CN**](/zh/README.md), [**KR**](/ko/README.md), [**FR**](/fr/README.md), [**TR**](/tr/README.md), [**AR**](/ar/README.md)
|
||||||
|
|
||||||
<br/>
|
<br/>
|
||||||
|
|
||||||
@ -34,7 +34,7 @@ are familiar with the patterns.
|
|||||||
# Getting started
|
# Getting started
|
||||||
|
|
||||||
This site showcases Java Design Patterns. The solutions have been developed by
|
This site showcases Java Design Patterns. The solutions have been developed by
|
||||||
experienced programmers and architects from the open source community. The
|
experienced programmers and architects from the open source community. The
|
||||||
patterns can be browsed by their high level descriptions or by looking at their
|
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
|
source code. The source code examples are well commented and can be thought as
|
||||||
programming tutorials on how to implement a specific pattern. We use the most
|
programming tutorials on how to implement a specific pattern. We use the most
|
||||||
@ -49,7 +49,7 @@ patterns should only be introduced when they are needed for practical
|
|||||||
extensibility.
|
extensibility.
|
||||||
|
|
||||||
Once you are familiar with these concepts you can start drilling down into the
|
Once you are familiar with these concepts you can start drilling down into the
|
||||||
[available design patterns](https://java-design-patterns.com/patterns/) by any
|
[available design patterns](https://java-design-patterns.com/patterns/) by any
|
||||||
of the following approaches
|
of the following approaches
|
||||||
|
|
||||||
- Search for a specific pattern by name. Can't find one? Please report a new pattern [here](https://github.com/iluwatar/java-design-patterns/issues).
|
- Search for a specific pattern by name. Can't find one? Please report a new pattern [here](https://github.com/iluwatar/java-design-patterns/issues).
|
||||||
@ -61,8 +61,8 @@ in your architectures and have as much fun learning them as we had developing th
|
|||||||
|
|
||||||
# How to contribute
|
# How to contribute
|
||||||
|
|
||||||
If you are willing to contribute to the project you will find the relevant information in
|
If you are willing to contribute to the project you will find the relevant information in
|
||||||
our [developer wiki](https://github.com/iluwatar/java-design-patterns/wiki). We will help
|
our [developer wiki](https://github.com/iluwatar/java-design-patterns/wiki). We will help
|
||||||
you and answer your questions in the [Gitter chatroom](https://gitter.im/iluwatar/java-design-patterns).
|
you and answer your questions in the [Gitter chatroom](https://gitter.im/iluwatar/java-design-patterns).
|
||||||
|
|
||||||
# License
|
# License
|
||||||
@ -323,9 +323,6 @@ This project is licensed under the terms of the MIT license.
|
|||||||
</tr>
|
</tr>
|
||||||
<tr>
|
<tr>
|
||||||
<td align="center"><a href="https://github.com/JackieNim"><img src="https://avatars.githubusercontent.com/u/4138836?v=4?s=100" width="100px;" alt=""/><br /><sub><b>JackieNim</b></sub></a><br /><a href="https://github.com/iluwatar/java-design-patterns/commits?author=JackieNim" title="Code">💻</a></td>
|
<td align="center"><a href="https://github.com/JackieNim"><img src="https://avatars.githubusercontent.com/u/4138836?v=4?s=100" width="100px;" alt=""/><br /><sub><b>JackieNim</b></sub></a><br /><a href="https://github.com/iluwatar/java-design-patterns/commits?author=JackieNim" title="Code">💻</a></td>
|
||||||
<td align="center"><a href="https://github.com/EdisonE3"><img src="https://avatars.githubusercontent.com/u/52118917?v=4?s=100" width="100px;" alt=""/><br /><sub><b>EdisonE3</b></sub></a><br /><a href="https://github.com/iluwatar/java-design-patterns/commits?author=EdisonE3" title="Code">💻</a></td>
|
|
||||||
<td align="center"><a href="https://github.com/tao-sun2"><img src="https://avatars.githubusercontent.com/u/66189688?v=4?s=100" width="100px;" alt=""/><br /><sub><b>Tao</b></sub></a><br /><a href="https://github.com/iluwatar/java-design-patterns/commits?author=tao-sun2" title="Code">💻</a></td>
|
|
||||||
<td align="center"><a href="https://github.com/JuanManuelAbate"><img src="https://avatars.githubusercontent.com/u/16357060?v=4?s=100" width="100px;" alt=""/><br /><sub><b>Juan Manuel Abate</b></sub></a><br /><a href="#translation-JuanManuelAbate" title="Translation">🌍</a></td>
|
|
||||||
</tr>
|
</tr>
|
||||||
</table>
|
</table>
|
||||||
|
|
||||||
|
@ -4,7 +4,6 @@ title: Abstract Document
|
|||||||
folder: abstract-document
|
folder: abstract-document
|
||||||
permalink: /patterns/abstract-document/
|
permalink: /patterns/abstract-document/
|
||||||
categories: Structural
|
categories: Structural
|
||||||
language: en
|
|
||||||
tags:
|
tags:
|
||||||
- Extensibility
|
- Extensibility
|
||||||
---
|
---
|
||||||
|
@ -4,7 +4,6 @@ title: Abstract Factory
|
|||||||
folder: abstract-factory
|
folder: abstract-factory
|
||||||
permalink: /patterns/abstract-factory/
|
permalink: /patterns/abstract-factory/
|
||||||
categories: Creational
|
categories: Creational
|
||||||
language: en
|
|
||||||
tags:
|
tags:
|
||||||
- Gang of Four
|
- Gang of Four
|
||||||
---
|
---
|
||||||
@ -20,9 +19,9 @@ objects without specifying their concrete classes.
|
|||||||
|
|
||||||
## Explanation
|
## Explanation
|
||||||
|
|
||||||
Real-world example
|
Real world example
|
||||||
|
|
||||||
> To create a kingdom we need objects with a common theme. The elven kingdom needs an elven king, elven castle, and elven army whereas the orcish kingdom needs an orcish king, orcish castle, and orcish army. There is a dependency between the objects in the kingdom.
|
> To create a kingdom we need objects with a common theme. Elven kingdom needs an Elven king, Elven castle and Elven army whereas Orcish kingdom needs an Orcish king, Orcish castle and Orcish army. There is a dependency between the objects in the kingdom.
|
||||||
|
|
||||||
In plain words
|
In plain words
|
||||||
|
|
||||||
@ -34,7 +33,7 @@ Wikipedia says
|
|||||||
|
|
||||||
**Programmatic Example**
|
**Programmatic Example**
|
||||||
|
|
||||||
Translating the kingdom example above. First of all, we have some interfaces and implementation for the objects in the
|
Translating the kingdom example above. First of all we have some interfaces and implementation for the objects in the
|
||||||
kingdom.
|
kingdom.
|
||||||
|
|
||||||
```java
|
```java
|
||||||
@ -52,21 +51,21 @@ public interface Army {
|
|||||||
|
|
||||||
// Elven implementations ->
|
// Elven implementations ->
|
||||||
public class ElfCastle implements Castle {
|
public class ElfCastle implements Castle {
|
||||||
static final String DESCRIPTION = "This is the elven castle!";
|
static final String DESCRIPTION = "This is the Elven castle!";
|
||||||
@Override
|
@Override
|
||||||
public String getDescription() {
|
public String getDescription() {
|
||||||
return DESCRIPTION;
|
return DESCRIPTION;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
public class ElfKing implements King {
|
public class ElfKing implements King {
|
||||||
static final String DESCRIPTION = "This is the elven king!";
|
static final String DESCRIPTION = "This is the Elven king!";
|
||||||
@Override
|
@Override
|
||||||
public String getDescription() {
|
public String getDescription() {
|
||||||
return DESCRIPTION;
|
return DESCRIPTION;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
public class ElfArmy implements Army {
|
public class ElfArmy implements Army {
|
||||||
static final String DESCRIPTION = "This is the elven Army!";
|
static final String DESCRIPTION = "This is the Elven Army!";
|
||||||
@Override
|
@Override
|
||||||
public String getDescription() {
|
public String getDescription() {
|
||||||
return DESCRIPTION;
|
return DESCRIPTION;
|
||||||
@ -77,7 +76,7 @@ public class ElfArmy implements Army {
|
|||||||
|
|
||||||
```
|
```
|
||||||
|
|
||||||
Then we have the abstraction and implementations for the kingdom factory.
|
Then we have the abstraction and implementations for the kingdom factory
|
||||||
|
|
||||||
```java
|
```java
|
||||||
public interface KingdomFactory {
|
public interface KingdomFactory {
|
||||||
@ -111,7 +110,7 @@ public class OrcKingdomFactory implements KingdomFactory {
|
|||||||
}
|
}
|
||||||
```
|
```
|
||||||
|
|
||||||
Now we have the abstract factory that lets us make a family of related objects i.e. elven kingdom factory creates elven castle, king and army, etc.
|
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.
|
||||||
|
|
||||||
```java
|
```java
|
||||||
var factory = new ElfKingdomFactory();
|
var factory = new ElfKingdomFactory();
|
||||||
@ -127,13 +126,13 @@ army.getDescription();
|
|||||||
Program output:
|
Program output:
|
||||||
|
|
||||||
```java
|
```java
|
||||||
This is the elven castle!
|
This is the Elven castle!
|
||||||
This is the elven king!
|
This is the Elven king!
|
||||||
This is the elven Army!
|
This is the Elven Army!
|
||||||
```
|
```
|
||||||
|
|
||||||
Now, we can design a factory for our different kingdom factories. In this example, we created `FactoryMaker`, responsible for returning an instance of either `ElfKingdomFactory` or `OrcKingdomFactory`.
|
Now, we can design a factory for our different kingdom factories. In this example, we created FactoryMaker, responsible for returning an instance of either ElfKingdomFactory or OrcKingdomFactory.
|
||||||
The client can use `FactoryMaker` to create the desired concrete factory which, in turn, will produce different concrete objects (derived from `Army`, `King`, `Castle`).
|
The client can use FactoryMaker to create the desired concrete factory which, in turn, will produce different concrete objects (Army, King, Castle).
|
||||||
In this example, we also used an enum to parameterize which type of kingdom factory the client will ask for.
|
In this example, we also used an enum to parameterize which type of kingdom factory the client will ask for.
|
||||||
|
|
||||||
```java
|
```java
|
||||||
@ -179,8 +178,8 @@ public static void main(String[] args) {
|
|||||||
|
|
||||||
Use the Abstract Factory pattern when
|
Use the Abstract Factory pattern when
|
||||||
|
|
||||||
* The system should be independent of how its products are created, composed, and represented
|
* The system should be independent of how its products are created, composed and represented
|
||||||
* The system should be configured with one of the multiple families of products
|
* The system should be configured with one of multiple families of products
|
||||||
* The family of related product objects is designed to be used together, and you need to enforce this constraint
|
* The family of related product objects is designed to be used together, and you need to enforce this constraint
|
||||||
* You want to provide a class library of products, and you want to reveal just their interfaces, not their implementations
|
* You want to provide a class library of products, and you want to reveal just their interfaces, not their implementations
|
||||||
* The lifetime of the dependency is conceptually shorter than the lifetime of the consumer.
|
* The lifetime of the dependency is conceptually shorter than the lifetime of the consumer.
|
||||||
@ -200,7 +199,7 @@ Example use cases
|
|||||||
|
|
||||||
* 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.
|
||||||
* While the pattern is great when creating predefined objects, adding the new ones might be challenging.
|
* While the pattern is great when creating predefined objects, adding the new ones might be challenging.
|
||||||
* The code becomes more complicated than it should be since a lot of new interfaces and classes are introduced along with the pattern.
|
* The code becomes more complicated than it should be, since a lot of new interfaces and classes are introduced along with the pattern.
|
||||||
|
|
||||||
## Tutorial
|
## Tutorial
|
||||||
|
|
||||||
|
@ -37,7 +37,7 @@ import lombok.extern.slf4j.Slf4j;
|
|||||||
*
|
*
|
||||||
* <p>The essence of the Abstract Factory pattern is a factory interface ({@link KingdomFactory})
|
* <p>The essence of the Abstract Factory pattern is a factory interface ({@link KingdomFactory})
|
||||||
* and its implementations ( {@link ElfKingdomFactory}, {@link OrcKingdomFactory}). The example uses
|
* and its implementations ( {@link ElfKingdomFactory}, {@link OrcKingdomFactory}). The example uses
|
||||||
* both concrete implementations to create a king, a castle, and an army.
|
* both concrete implementations to create a king, a castle and an army.
|
||||||
*/
|
*/
|
||||||
@Slf4j
|
@Slf4j
|
||||||
public class App implements Runnable {
|
public class App implements Runnable {
|
||||||
@ -60,13 +60,13 @@ public class App implements Runnable {
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void run() {
|
public void run() {
|
||||||
LOGGER.info("elf kingdom");
|
LOGGER.info("Elf Kingdom");
|
||||||
createKingdom(Kingdom.FactoryMaker.KingdomType.ELF);
|
createKingdom(Kingdom.FactoryMaker.KingdomType.ELF);
|
||||||
LOGGER.info(kingdom.getArmy().getDescription());
|
LOGGER.info(kingdom.getArmy().getDescription());
|
||||||
LOGGER.info(kingdom.getCastle().getDescription());
|
LOGGER.info(kingdom.getCastle().getDescription());
|
||||||
LOGGER.info(kingdom.getKing().getDescription());
|
LOGGER.info(kingdom.getKing().getDescription());
|
||||||
|
|
||||||
LOGGER.info("orc kingdom");
|
LOGGER.info("Orc Kingdom");
|
||||||
createKingdom(Kingdom.FactoryMaker.KingdomType.ORC);
|
createKingdom(Kingdom.FactoryMaker.KingdomType.ORC);
|
||||||
LOGGER.info(kingdom.getArmy().getDescription());
|
LOGGER.info(kingdom.getArmy().getDescription());
|
||||||
LOGGER.info(kingdom.getCastle().getDescription());
|
LOGGER.info(kingdom.getCastle().getDescription());
|
||||||
|
@ -28,7 +28,7 @@ package com.iluwatar.abstractfactory;
|
|||||||
*/
|
*/
|
||||||
public class ElfArmy implements Army {
|
public class ElfArmy implements Army {
|
||||||
|
|
||||||
static final String DESCRIPTION = "This is the elven army!";
|
static final String DESCRIPTION = "This is the Elven Army!";
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public String getDescription() {
|
public String getDescription() {
|
||||||
|
@ -28,7 +28,7 @@ package com.iluwatar.abstractfactory;
|
|||||||
*/
|
*/
|
||||||
public class ElfCastle implements Castle {
|
public class ElfCastle implements Castle {
|
||||||
|
|
||||||
static final String DESCRIPTION = "This is the elven castle!";
|
static final String DESCRIPTION = "This is the Elven castle!";
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public String getDescription() {
|
public String getDescription() {
|
||||||
|
@ -28,7 +28,7 @@ package com.iluwatar.abstractfactory;
|
|||||||
*/
|
*/
|
||||||
public class ElfKing implements King {
|
public class ElfKing implements King {
|
||||||
|
|
||||||
static final String DESCRIPTION = "This is the elven king!";
|
static final String DESCRIPTION = "This is the Elven king!";
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public String getDescription() {
|
public String getDescription() {
|
||||||
|
@ -28,7 +28,7 @@ package com.iluwatar.abstractfactory;
|
|||||||
*/
|
*/
|
||||||
public class OrcArmy implements Army {
|
public class OrcArmy implements Army {
|
||||||
|
|
||||||
static final String DESCRIPTION = "This is the orc army!";
|
static final String DESCRIPTION = "This is the Orc Army!";
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public String getDescription() {
|
public String getDescription() {
|
||||||
|
@ -28,7 +28,7 @@ package com.iluwatar.abstractfactory;
|
|||||||
*/
|
*/
|
||||||
public class OrcCastle implements Castle {
|
public class OrcCastle implements Castle {
|
||||||
|
|
||||||
static final String DESCRIPTION = "This is the orc castle!";
|
static final String DESCRIPTION = "This is the Orc castle!";
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public String getDescription() {
|
public String getDescription() {
|
||||||
|
@ -28,7 +28,7 @@ package com.iluwatar.abstractfactory;
|
|||||||
*/
|
*/
|
||||||
public class OrcKing implements King {
|
public class OrcKing implements King {
|
||||||
|
|
||||||
static final String DESCRIPTION = "This is the orc king!";
|
static final String DESCRIPTION = "This is the Orc king!";
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public String getDescription() {
|
public String getDescription() {
|
||||||
|
@ -29,14 +29,14 @@ import static org.junit.jupiter.api.Assertions.assertEquals;
|
|||||||
import static org.junit.jupiter.api.Assertions.assertTrue;
|
import static org.junit.jupiter.api.Assertions.assertTrue;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Tests for abstract factory.
|
* Test for abstract factory.
|
||||||
*/
|
*/
|
||||||
class AbstractFactoryTest {
|
class AbstractFactoryTest {
|
||||||
|
|
||||||
private final App app = new App();
|
private final App app = new App();
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
void verifyKingCreation() {
|
void king() {
|
||||||
app.createKingdom(Kingdom.FactoryMaker.KingdomType.ELF);
|
app.createKingdom(Kingdom.FactoryMaker.KingdomType.ELF);
|
||||||
final var kingdom = app.getKingdom();
|
final var kingdom = app.getKingdom();
|
||||||
|
|
||||||
@ -51,7 +51,7 @@ class AbstractFactoryTest {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
void verifyCastleCreation() {
|
void castle() {
|
||||||
app.createKingdom(Kingdom.FactoryMaker.KingdomType.ELF);
|
app.createKingdom(Kingdom.FactoryMaker.KingdomType.ELF);
|
||||||
final var kingdom = app.getKingdom();
|
final var kingdom = app.getKingdom();
|
||||||
|
|
||||||
@ -66,7 +66,7 @@ class AbstractFactoryTest {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
void verifyArmyCreation() {
|
void army() {
|
||||||
app.createKingdom(Kingdom.FactoryMaker.KingdomType.ELF);
|
app.createKingdom(Kingdom.FactoryMaker.KingdomType.ELF);
|
||||||
final var kingdom = app.getKingdom();
|
final var kingdom = app.getKingdom();
|
||||||
|
|
||||||
@ -81,7 +81,7 @@ class AbstractFactoryTest {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
void verifyElfKingdomCreation() {
|
void createElfKingdom() {
|
||||||
app.createKingdom(Kingdom.FactoryMaker.KingdomType.ELF);
|
app.createKingdom(Kingdom.FactoryMaker.KingdomType.ELF);
|
||||||
final var kingdom = app.getKingdom();
|
final var kingdom = app.getKingdom();
|
||||||
|
|
||||||
@ -97,7 +97,7 @@ class AbstractFactoryTest {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
void verifyOrcKingdomCreation() {
|
void createOrcKingdom() {
|
||||||
app.createKingdom(Kingdom.FactoryMaker.KingdomType.ORC);
|
app.createKingdom(Kingdom.FactoryMaker.KingdomType.ORC);
|
||||||
final var kingdom = app.getKingdom();
|
final var kingdom = app.getKingdom();
|
||||||
|
|
||||||
|
@ -28,7 +28,10 @@ import org.junit.jupiter.api.Test;
|
|||||||
import static org.junit.jupiter.api.Assertions.assertDoesNotThrow;
|
import static org.junit.jupiter.api.Assertions.assertDoesNotThrow;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Check whether the execution of the main method in {@link App} throws an exception.
|
* Issue: Add at least one assertion to this test case.
|
||||||
|
*
|
||||||
|
* Solution: Inserted assertion to check whether the execution of the main method in {@link App}
|
||||||
|
* throws an exception.
|
||||||
*/
|
*/
|
||||||
class AppTest {
|
class AppTest {
|
||||||
|
|
||||||
|
@ -4,7 +4,6 @@ title: Active Object
|
|||||||
folder: active-object
|
folder: active-object
|
||||||
permalink: /patterns/active-object/
|
permalink: /patterns/active-object/
|
||||||
categories: Concurrency
|
categories: Concurrency
|
||||||
language: en
|
|
||||||
tags:
|
tags:
|
||||||
- Performance
|
- Performance
|
||||||
---
|
---
|
||||||
|
@ -4,7 +4,6 @@ title: Acyclic Visitor
|
|||||||
folder: acyclic-visitor
|
folder: acyclic-visitor
|
||||||
permalink: /patterns/acyclic-visitor/
|
permalink: /patterns/acyclic-visitor/
|
||||||
categories: Behavioral
|
categories: Behavioral
|
||||||
language: en
|
|
||||||
tags:
|
tags:
|
||||||
- Extensibility
|
- Extensibility
|
||||||
---
|
---
|
||||||
|
@ -4,7 +4,6 @@ title: Adapter
|
|||||||
folder: adapter
|
folder: adapter
|
||||||
permalink: /patterns/adapter/
|
permalink: /patterns/adapter/
|
||||||
categories: Structural
|
categories: Structural
|
||||||
language: en
|
|
||||||
tags:
|
tags:
|
||||||
- Gang of Four
|
- Gang of Four
|
||||||
---
|
---
|
||||||
|
@ -4,7 +4,6 @@ title: Aggregator Microservices
|
|||||||
folder: aggregator-microservices
|
folder: aggregator-microservices
|
||||||
permalink: /patterns/aggregator-microservices/
|
permalink: /patterns/aggregator-microservices/
|
||||||
categories: Architectural
|
categories: Architectural
|
||||||
language: en
|
|
||||||
tags:
|
tags:
|
||||||
- Cloud distributed
|
- Cloud distributed
|
||||||
- Decoupling
|
- Decoupling
|
||||||
|
@ -4,7 +4,6 @@ title: Ambassador
|
|||||||
folder: ambassador
|
folder: ambassador
|
||||||
permalink: /patterns/ambassador/
|
permalink: /patterns/ambassador/
|
||||||
categories: Structural
|
categories: Structural
|
||||||
language: en
|
|
||||||
tags:
|
tags:
|
||||||
- Decoupling
|
- Decoupling
|
||||||
- Cloud distributed
|
- Cloud distributed
|
||||||
|
@ -4,7 +4,6 @@ title: API Gateway
|
|||||||
folder: api-gateway
|
folder: api-gateway
|
||||||
permalink: /patterns/api-gateway/
|
permalink: /patterns/api-gateway/
|
||||||
categories: Architectural
|
categories: Architectural
|
||||||
language: en
|
|
||||||
tags:
|
tags:
|
||||||
- Cloud distributed
|
- Cloud distributed
|
||||||
- Decoupling
|
- Decoupling
|
||||||
|
@ -4,7 +4,6 @@ title: Arrange/Act/Assert
|
|||||||
folder: arrange-act-assert
|
folder: arrange-act-assert
|
||||||
permalink: /patterns/arrange-act-assert/
|
permalink: /patterns/arrange-act-assert/
|
||||||
categories: Idiom
|
categories: Idiom
|
||||||
language: en
|
|
||||||
tags:
|
tags:
|
||||||
- Testing
|
- Testing
|
||||||
---
|
---
|
||||||
|
BIN
assets/flags/AR.png
Normal file
BIN
assets/flags/AR.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 252 B |
BIN
assets/flags/CN.png
Normal file
BIN
assets/flags/CN.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 310 B |
BIN
assets/flags/FR.png
Normal file
BIN
assets/flags/FR.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 100 B |
BIN
assets/flags/KR.png
Normal file
BIN
assets/flags/KR.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 413 B |
BIN
assets/flags/TR.png
Normal file
BIN
assets/flags/TR.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 802 B |
@ -4,7 +4,6 @@ title: Async Method Invocation
|
|||||||
folder: async-method-invocation
|
folder: async-method-invocation
|
||||||
permalink: /patterns/async-method-invocation/
|
permalink: /patterns/async-method-invocation/
|
||||||
categories: Concurrency
|
categories: Concurrency
|
||||||
language: en
|
|
||||||
tags:
|
tags:
|
||||||
- Reactive
|
- Reactive
|
||||||
---
|
---
|
||||||
|
@ -4,7 +4,6 @@ title: Balking
|
|||||||
folder: balking
|
folder: balking
|
||||||
permalink: /patterns/balking/
|
permalink: /patterns/balking/
|
||||||
categories: Concurrency
|
categories: Concurrency
|
||||||
language: en
|
|
||||||
tags:
|
tags:
|
||||||
- Decoupling
|
- Decoupling
|
||||||
---
|
---
|
||||||
|
@ -4,7 +4,6 @@ title: Bridge
|
|||||||
folder: bridge
|
folder: bridge
|
||||||
permalink: /patterns/bridge/
|
permalink: /patterns/bridge/
|
||||||
categories: Structural
|
categories: Structural
|
||||||
language: en
|
|
||||||
tags:
|
tags:
|
||||||
- Gang of Four
|
- Gang of Four
|
||||||
---
|
---
|
||||||
|
@ -43,7 +43,7 @@ public class Hammer implements Weapon {
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void swing() {
|
public void swing() {
|
||||||
LOGGER.info("The hammer is swung.");
|
LOGGER.info("The hammer is swinged.");
|
||||||
enchantment.apply();
|
enchantment.apply();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -43,7 +43,7 @@ public class Sword implements Weapon {
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void swing() {
|
public void swing() {
|
||||||
LOGGER.info("The sword is swung.");
|
LOGGER.info("The sword is swinged.");
|
||||||
enchantment.apply();
|
enchantment.apply();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -4,7 +4,6 @@ title: Builder
|
|||||||
folder: builder
|
folder: builder
|
||||||
permalink: /patterns/builder/
|
permalink: /patterns/builder/
|
||||||
categories: Creational
|
categories: Creational
|
||||||
language: en
|
|
||||||
tags:
|
tags:
|
||||||
- Gang of Four
|
- Gang of Four
|
||||||
---
|
---
|
||||||
|
@ -4,7 +4,6 @@ title: Business Delegate
|
|||||||
folder: business-delegate
|
folder: business-delegate
|
||||||
permalink: /patterns/business-delegate/
|
permalink: /patterns/business-delegate/
|
||||||
categories: Structural
|
categories: Structural
|
||||||
language: en
|
|
||||||
tags:
|
tags:
|
||||||
- Decoupling
|
- Decoupling
|
||||||
---
|
---
|
||||||
|
@ -4,7 +4,6 @@ title: Bytecode
|
|||||||
folder: bytecode
|
folder: bytecode
|
||||||
permalink: /patterns/bytecode/
|
permalink: /patterns/bytecode/
|
||||||
categories: Behavioral
|
categories: Behavioral
|
||||||
language: en
|
|
||||||
tags:
|
tags:
|
||||||
- Game programming
|
- Game programming
|
||||||
---
|
---
|
||||||
|
@ -4,7 +4,6 @@ title: Caching
|
|||||||
folder: caching
|
folder: caching
|
||||||
permalink: /patterns/caching/
|
permalink: /patterns/caching/
|
||||||
categories: Behavioral
|
categories: Behavioral
|
||||||
language: en
|
|
||||||
tags:
|
tags:
|
||||||
- Performance
|
- Performance
|
||||||
- Cloud distributed
|
- Cloud distributed
|
||||||
|
@ -4,7 +4,6 @@ title: Callback
|
|||||||
folder: callback
|
folder: callback
|
||||||
permalink: /patterns/callback/
|
permalink: /patterns/callback/
|
||||||
categories: Idiom
|
categories: Idiom
|
||||||
language: en
|
|
||||||
tags:
|
tags:
|
||||||
- Reactive
|
- Reactive
|
||||||
---
|
---
|
||||||
|
@ -4,7 +4,6 @@ title: Chain of responsibility
|
|||||||
folder: chain
|
folder: chain
|
||||||
permalink: /patterns/chain/
|
permalink: /patterns/chain/
|
||||||
categories: Behavioral
|
categories: Behavioral
|
||||||
language: en
|
|
||||||
tags:
|
tags:
|
||||||
- Gang of Four
|
- Gang of Four
|
||||||
---
|
---
|
||||||
|
@ -4,7 +4,6 @@ title: Circuit Breaker
|
|||||||
folder: circuit-breaker
|
folder: circuit-breaker
|
||||||
permalink: /patterns/circuit-breaker/
|
permalink: /patterns/circuit-breaker/
|
||||||
categories: Behavioral
|
categories: Behavioral
|
||||||
language: en
|
|
||||||
tags:
|
tags:
|
||||||
- Performance
|
- Performance
|
||||||
- Decoupling
|
- Decoupling
|
||||||
|
@ -4,7 +4,6 @@ title: Static Content Hosting
|
|||||||
folder: cloud-static-content-hosting
|
folder: cloud-static-content-hosting
|
||||||
permalink: /patterns/cloud-static-content-hosting/
|
permalink: /patterns/cloud-static-content-hosting/
|
||||||
categories: Cloud
|
categories: Cloud
|
||||||
language: en
|
|
||||||
tags:
|
tags:
|
||||||
- Cloud distributed
|
- Cloud distributed
|
||||||
---
|
---
|
||||||
|
@ -4,7 +4,6 @@ title: Collection Pipeline
|
|||||||
folder: collection-pipeline
|
folder: collection-pipeline
|
||||||
permalink: /patterns/collection-pipeline/
|
permalink: /patterns/collection-pipeline/
|
||||||
categories: Functional
|
categories: Functional
|
||||||
language: en
|
|
||||||
tags:
|
tags:
|
||||||
- Reactive
|
- Reactive
|
||||||
---
|
---
|
||||||
|
@ -4,7 +4,6 @@ title: Combinator
|
|||||||
folder: combinator
|
folder: combinator
|
||||||
permalink: /patterns/combinator/
|
permalink: /patterns/combinator/
|
||||||
categories: Idiom
|
categories: Idiom
|
||||||
language: en
|
|
||||||
tags:
|
tags:
|
||||||
- Reactive
|
- Reactive
|
||||||
---
|
---
|
||||||
|
@ -4,7 +4,6 @@ title: Command
|
|||||||
folder: command
|
folder: command
|
||||||
permalink: /patterns/command/
|
permalink: /patterns/command/
|
||||||
categories: Behavioral
|
categories: Behavioral
|
||||||
language: en
|
|
||||||
tags:
|
tags:
|
||||||
- Gang of Four
|
- Gang of Four
|
||||||
---
|
---
|
||||||
|
@ -4,7 +4,6 @@ title: Commander
|
|||||||
folder: commander
|
folder: commander
|
||||||
permalink: /patterns/commander/
|
permalink: /patterns/commander/
|
||||||
categories: Concurrency
|
categories: Concurrency
|
||||||
language: en
|
|
||||||
tags:
|
tags:
|
||||||
- Cloud distributed
|
- Cloud distributed
|
||||||
---
|
---
|
||||||
|
@ -4,7 +4,6 @@ title: Composite Entity
|
|||||||
folder: composite-entity
|
folder: composite-entity
|
||||||
permalink: /patterns/composite-entity/
|
permalink: /patterns/composite-entity/
|
||||||
categories: Structural
|
categories: Structural
|
||||||
language: en
|
|
||||||
tags:
|
tags:
|
||||||
- Enterprise Integration Pattern
|
- Enterprise Integration Pattern
|
||||||
---
|
---
|
||||||
|
@ -1,28 +1,4 @@
|
|||||||
<?xml version="1.0" encoding="UTF-8"?>
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
<!--
|
|
||||||
|
|
||||||
The MIT License
|
|
||||||
Copyright © 2014-2021 Ilkka Seppälä
|
|
||||||
|
|
||||||
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
||||||
of this software and associated documentation files (the "Software"), to deal
|
|
||||||
in the Software without restriction, including without limitation the rights
|
|
||||||
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
||||||
copies of the Software, and to permit persons to whom the Software is
|
|
||||||
furnished to do so, subject to the following conditions:
|
|
||||||
|
|
||||||
The above copyright notice and this permission notice shall be included in
|
|
||||||
all copies or substantial portions of the Software.
|
|
||||||
|
|
||||||
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
||||||
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
||||||
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
||||||
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
||||||
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
||||||
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
|
||||||
THE SOFTWARE.
|
|
||||||
|
|
||||||
-->
|
|
||||||
<project xmlns="http://maven.apache.org/POM/4.0.0"
|
<project xmlns="http://maven.apache.org/POM/4.0.0"
|
||||||
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
|
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
|
||||||
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
|
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
|
||||||
|
@ -1,26 +1,3 @@
|
|||||||
/*
|
|
||||||
* The MIT License
|
|
||||||
* Copyright © 2014-2021 Ilkka Seppälä
|
|
||||||
*
|
|
||||||
* Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
||||||
* of this software and associated documentation files (the "Software"), to deal
|
|
||||||
* in the Software without restriction, including without limitation the rights
|
|
||||||
* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
||||||
* copies of the Software, and to permit persons to whom the Software is
|
|
||||||
* furnished to do so, subject to the following conditions:
|
|
||||||
*
|
|
||||||
* The above copyright notice and this permission notice shall be included in
|
|
||||||
* all copies or substantial portions of the Software.
|
|
||||||
*
|
|
||||||
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
||||||
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
||||||
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
||||||
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
||||||
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
||||||
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
|
||||||
* THE SOFTWARE.
|
|
||||||
*/
|
|
||||||
|
|
||||||
package com.iluwatar.compositeentity;
|
package com.iluwatar.compositeentity;
|
||||||
|
|
||||||
import java.util.Arrays;
|
import java.util.Arrays;
|
||||||
|
@ -1,26 +1,3 @@
|
|||||||
/*
|
|
||||||
* The MIT License
|
|
||||||
* Copyright © 2014-2021 Ilkka Seppälä
|
|
||||||
*
|
|
||||||
* Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
||||||
* of this software and associated documentation files (the "Software"), to deal
|
|
||||||
* in the Software without restriction, including without limitation the rights
|
|
||||||
* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
||||||
* copies of the Software, and to permit persons to whom the Software is
|
|
||||||
* furnished to do so, subject to the following conditions:
|
|
||||||
*
|
|
||||||
* The above copyright notice and this permission notice shall be included in
|
|
||||||
* all copies or substantial portions of the Software.
|
|
||||||
*
|
|
||||||
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
||||||
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
||||||
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
||||||
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
||||||
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
||||||
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
|
||||||
* THE SOFTWARE.
|
|
||||||
*/
|
|
||||||
|
|
||||||
package com.iluwatar.compositeentity;
|
package com.iluwatar.compositeentity;
|
||||||
|
|
||||||
import java.util.Arrays;
|
import java.util.Arrays;
|
||||||
|
@ -1,26 +1,3 @@
|
|||||||
/*
|
|
||||||
* The MIT License
|
|
||||||
* Copyright © 2014-2021 Ilkka Seppälä
|
|
||||||
*
|
|
||||||
* Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
||||||
* of this software and associated documentation files (the "Software"), to deal
|
|
||||||
* in the Software without restriction, including without limitation the rights
|
|
||||||
* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
||||||
* copies of the Software, and to permit persons to whom the Software is
|
|
||||||
* furnished to do so, subject to the following conditions:
|
|
||||||
*
|
|
||||||
* The above copyright notice and this permission notice shall be included in
|
|
||||||
* all copies or substantial portions of the Software.
|
|
||||||
*
|
|
||||||
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
||||||
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
||||||
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
||||||
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
||||||
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
||||||
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
|
||||||
* THE SOFTWARE.
|
|
||||||
*/
|
|
||||||
|
|
||||||
package com.iluwatar.compositeentity;
|
package com.iluwatar.compositeentity;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -1,26 +1,3 @@
|
|||||||
/*
|
|
||||||
* The MIT License
|
|
||||||
* Copyright © 2014-2021 Ilkka Seppälä
|
|
||||||
*
|
|
||||||
* Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
||||||
* of this software and associated documentation files (the "Software"), to deal
|
|
||||||
* in the Software without restriction, including without limitation the rights
|
|
||||||
* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
||||||
* copies of the Software, and to permit persons to whom the Software is
|
|
||||||
* furnished to do so, subject to the following conditions:
|
|
||||||
*
|
|
||||||
* The above copyright notice and this permission notice shall be included in
|
|
||||||
* all copies or substantial portions of the Software.
|
|
||||||
*
|
|
||||||
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
||||||
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
||||||
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
||||||
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
||||||
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
||||||
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
|
||||||
* THE SOFTWARE.
|
|
||||||
*/
|
|
||||||
|
|
||||||
package com.iluwatar.compositeentity;
|
package com.iluwatar.compositeentity;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -1,26 +1,3 @@
|
|||||||
/*
|
|
||||||
* The MIT License
|
|
||||||
* Copyright © 2014-2021 Ilkka Seppälä
|
|
||||||
*
|
|
||||||
* Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
||||||
* of this software and associated documentation files (the "Software"), to deal
|
|
||||||
* in the Software without restriction, including without limitation the rights
|
|
||||||
* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
||||||
* copies of the Software, and to permit persons to whom the Software is
|
|
||||||
* furnished to do so, subject to the following conditions:
|
|
||||||
*
|
|
||||||
* The above copyright notice and this permission notice shall be included in
|
|
||||||
* all copies or substantial portions of the Software.
|
|
||||||
*
|
|
||||||
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
||||||
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
||||||
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
||||||
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
||||||
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
||||||
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
|
||||||
* THE SOFTWARE.
|
|
||||||
*/
|
|
||||||
|
|
||||||
package com.iluwatar.compositeentity;
|
package com.iluwatar.compositeentity;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -1,26 +1,3 @@
|
|||||||
/*
|
|
||||||
* The MIT License
|
|
||||||
* Copyright © 2014-2021 Ilkka Seppälä
|
|
||||||
*
|
|
||||||
* Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
||||||
* of this software and associated documentation files (the "Software"), to deal
|
|
||||||
* in the Software without restriction, including without limitation the rights
|
|
||||||
* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
||||||
* copies of the Software, and to permit persons to whom the Software is
|
|
||||||
* furnished to do so, subject to the following conditions:
|
|
||||||
*
|
|
||||||
* The above copyright notice and this permission notice shall be included in
|
|
||||||
* all copies or substantial portions of the Software.
|
|
||||||
*
|
|
||||||
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
||||||
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
||||||
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
||||||
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
||||||
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
||||||
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
|
||||||
* THE SOFTWARE.
|
|
||||||
*/
|
|
||||||
|
|
||||||
package com.iluwatar.compositeentity;
|
package com.iluwatar.compositeentity;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -1,26 +1,3 @@
|
|||||||
/*
|
|
||||||
* The MIT License
|
|
||||||
* Copyright © 2014-2021 Ilkka Seppälä
|
|
||||||
*
|
|
||||||
* Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
||||||
* of this software and associated documentation files (the "Software"), to deal
|
|
||||||
* in the Software without restriction, including without limitation the rights
|
|
||||||
* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
||||||
* copies of the Software, and to permit persons to whom the Software is
|
|
||||||
* furnished to do so, subject to the following conditions:
|
|
||||||
*
|
|
||||||
* The above copyright notice and this permission notice shall be included in
|
|
||||||
* all copies or substantial portions of the Software.
|
|
||||||
*
|
|
||||||
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
||||||
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
||||||
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
||||||
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
||||||
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
||||||
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
|
||||||
* THE SOFTWARE.
|
|
||||||
*/
|
|
||||||
|
|
||||||
package com.iluwatar.compositeentity;
|
package com.iluwatar.compositeentity;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -1,26 +1,3 @@
|
|||||||
/*
|
|
||||||
* The MIT License
|
|
||||||
* Copyright © 2014-2021 Ilkka Seppälä
|
|
||||||
*
|
|
||||||
* Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
||||||
* of this software and associated documentation files (the "Software"), to deal
|
|
||||||
* in the Software without restriction, including without limitation the rights
|
|
||||||
* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
||||||
* copies of the Software, and to permit persons to whom the Software is
|
|
||||||
* furnished to do so, subject to the following conditions:
|
|
||||||
*
|
|
||||||
* The above copyright notice and this permission notice shall be included in
|
|
||||||
* all copies or substantial portions of the Software.
|
|
||||||
*
|
|
||||||
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
||||||
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
||||||
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
||||||
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
||||||
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
||||||
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
|
||||||
* THE SOFTWARE.
|
|
||||||
*/
|
|
||||||
|
|
||||||
package com.iluwatar.compositeentity;
|
package com.iluwatar.compositeentity;
|
||||||
|
|
||||||
import static org.junit.jupiter.api.Assertions.assertDoesNotThrow;
|
import static org.junit.jupiter.api.Assertions.assertDoesNotThrow;
|
||||||
|
@ -1,26 +1,3 @@
|
|||||||
/*
|
|
||||||
* The MIT License
|
|
||||||
* Copyright © 2014-2021 Ilkka Seppälä
|
|
||||||
*
|
|
||||||
* Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
||||||
* of this software and associated documentation files (the "Software"), to deal
|
|
||||||
* in the Software without restriction, including without limitation the rights
|
|
||||||
* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
||||||
* copies of the Software, and to permit persons to whom the Software is
|
|
||||||
* furnished to do so, subject to the following conditions:
|
|
||||||
*
|
|
||||||
* The above copyright notice and this permission notice shall be included in
|
|
||||||
* all copies or substantial portions of the Software.
|
|
||||||
*
|
|
||||||
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
||||||
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
||||||
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
||||||
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
||||||
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
||||||
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
|
||||||
* THE SOFTWARE.
|
|
||||||
*/
|
|
||||||
|
|
||||||
package com.iluwatar.compositeentity;
|
package com.iluwatar.compositeentity;
|
||||||
|
|
||||||
import org.junit.jupiter.api.Test;
|
import org.junit.jupiter.api.Test;
|
||||||
|
@ -4,7 +4,6 @@ title: Composite
|
|||||||
folder: composite
|
folder: composite
|
||||||
permalink: /patterns/composite/
|
permalink: /patterns/composite/
|
||||||
categories: Structural
|
categories: Structural
|
||||||
language: en
|
|
||||||
tags:
|
tags:
|
||||||
- Gang of Four
|
- Gang of Four
|
||||||
---
|
---
|
||||||
|
@ -4,7 +4,6 @@ title: Converter
|
|||||||
folder: converter
|
folder: converter
|
||||||
permalink: /patterns/converter/
|
permalink: /patterns/converter/
|
||||||
categories: Creational
|
categories: Creational
|
||||||
language: en
|
|
||||||
tags:
|
tags:
|
||||||
- Decoupling
|
- Decoupling
|
||||||
---
|
---
|
||||||
|
@ -4,7 +4,6 @@ title: CQRS
|
|||||||
folder: cqrs
|
folder: cqrs
|
||||||
permalink: /patterns/cqrs/
|
permalink: /patterns/cqrs/
|
||||||
categories: Architectural
|
categories: Architectural
|
||||||
language: en
|
|
||||||
tags:
|
tags:
|
||||||
- Performance
|
- Performance
|
||||||
- Cloud distributed
|
- Cloud distributed
|
||||||
|
@ -4,7 +4,6 @@ title: Data Access Object
|
|||||||
folder: dao
|
folder: dao
|
||||||
permalink: /patterns/dao/
|
permalink: /patterns/dao/
|
||||||
categories: Architectural
|
categories: Architectural
|
||||||
language: en
|
|
||||||
tags:
|
tags:
|
||||||
- Data access
|
- Data access
|
||||||
---
|
---
|
||||||
|
@ -5,7 +5,6 @@ folder: data-bus
|
|||||||
permalink: /patterns/data-bus/
|
permalink: /patterns/data-bus/
|
||||||
|
|
||||||
categories: Architectural
|
categories: Architectural
|
||||||
language: en
|
|
||||||
tags:
|
tags:
|
||||||
- Decoupling
|
- Decoupling
|
||||||
---
|
---
|
||||||
|
@ -4,7 +4,6 @@ title: Data Locality
|
|||||||
folder: data-locality
|
folder: data-locality
|
||||||
permalink: /patterns/data-locality/
|
permalink: /patterns/data-locality/
|
||||||
categories: Behavioral
|
categories: Behavioral
|
||||||
language: en
|
|
||||||
tags:
|
tags:
|
||||||
- Game programming
|
- Game programming
|
||||||
- Performance
|
- Performance
|
||||||
|
@ -4,7 +4,6 @@ title: Data Mapper
|
|||||||
folder: data-mapper
|
folder: data-mapper
|
||||||
permalink: /patterns/data-mapper/
|
permalink: /patterns/data-mapper/
|
||||||
categories: Architectural
|
categories: Architectural
|
||||||
language: en
|
|
||||||
tags:
|
tags:
|
||||||
- Decoupling
|
- Decoupling
|
||||||
---
|
---
|
||||||
|
@ -4,7 +4,6 @@ title: Data Transfer Object
|
|||||||
folder: data-transfer-object
|
folder: data-transfer-object
|
||||||
permalink: /patterns/data-transfer-object/
|
permalink: /patterns/data-transfer-object/
|
||||||
categories: Architectural
|
categories: Architectural
|
||||||
language: en
|
|
||||||
tags:
|
tags:
|
||||||
- Performance
|
- Performance
|
||||||
---
|
---
|
||||||
|
@ -4,7 +4,6 @@ title: Decorator
|
|||||||
folder: decorator
|
folder: decorator
|
||||||
permalink: /patterns/decorator/
|
permalink: /patterns/decorator/
|
||||||
categories: Structural
|
categories: Structural
|
||||||
language: en
|
|
||||||
tags:
|
tags:
|
||||||
- Gang Of Four
|
- Gang Of Four
|
||||||
- Extensibility
|
- Extensibility
|
||||||
|
@ -4,7 +4,6 @@ title: Delegation
|
|||||||
folder: delegation
|
folder: delegation
|
||||||
permalink: /patterns/delegation/
|
permalink: /patterns/delegation/
|
||||||
categories: Structural
|
categories: Structural
|
||||||
language: en
|
|
||||||
tags:
|
tags:
|
||||||
- Decoupling
|
- Decoupling
|
||||||
---
|
---
|
||||||
|
@ -4,7 +4,6 @@ title: Dependency Injection
|
|||||||
folder: dependency-injection
|
folder: dependency-injection
|
||||||
permalink: /patterns/dependency-injection/
|
permalink: /patterns/dependency-injection/
|
||||||
categories: Creational
|
categories: Creational
|
||||||
language: en
|
|
||||||
tags:
|
tags:
|
||||||
- Decoupling
|
- Decoupling
|
||||||
---
|
---
|
||||||
|
@ -4,7 +4,6 @@ title: Dirty Flag
|
|||||||
folder: dirty-flag
|
folder: dirty-flag
|
||||||
permalink: /patterns/dirty-flag/
|
permalink: /patterns/dirty-flag/
|
||||||
categories: Behavioral
|
categories: Behavioral
|
||||||
language: en
|
|
||||||
tags:
|
tags:
|
||||||
- Game programming
|
- Game programming
|
||||||
- Performance
|
- Performance
|
||||||
|
@ -4,7 +4,6 @@ title: Double Buffer
|
|||||||
folder: double-buffer
|
folder: double-buffer
|
||||||
permalink: /patterns/double-buffer/
|
permalink: /patterns/double-buffer/
|
||||||
categories: Behavioral
|
categories: Behavioral
|
||||||
language: en
|
|
||||||
tags:
|
tags:
|
||||||
- Performance
|
- Performance
|
||||||
- Game programming
|
- Game programming
|
||||||
|
@ -4,7 +4,6 @@ title: Double Checked Locking
|
|||||||
folder: double-checked-locking
|
folder: double-checked-locking
|
||||||
permalink: /patterns/double-checked-locking/
|
permalink: /patterns/double-checked-locking/
|
||||||
categories: Idiom
|
categories: Idiom
|
||||||
language: en
|
|
||||||
tags:
|
tags:
|
||||||
- Performance
|
- Performance
|
||||||
---
|
---
|
||||||
|
@ -4,7 +4,6 @@ title: Double Dispatch
|
|||||||
folder: double-dispatch
|
folder: double-dispatch
|
||||||
permalink: /patterns/double-dispatch/
|
permalink: /patterns/double-dispatch/
|
||||||
categories: Idiom
|
categories: Idiom
|
||||||
language: en
|
|
||||||
tags:
|
tags:
|
||||||
- Extensibility
|
- Extensibility
|
||||||
---
|
---
|
||||||
|
@ -4,7 +4,6 @@ title: EIP Aggregator
|
|||||||
folder: eip-aggregator
|
folder: eip-aggregator
|
||||||
permalink: /patterns/eip-aggregator/
|
permalink: /patterns/eip-aggregator/
|
||||||
categories: Integration
|
categories: Integration
|
||||||
language: en
|
|
||||||
tags:
|
tags:
|
||||||
- Enterprise Integration Pattern
|
- Enterprise Integration Pattern
|
||||||
---
|
---
|
||||||
|
@ -4,7 +4,6 @@ title: EIP Message Channel
|
|||||||
folder: eip-message-channel
|
folder: eip-message-channel
|
||||||
permalink: /patterns/eip-message-channel/
|
permalink: /patterns/eip-message-channel/
|
||||||
categories: Integration
|
categories: Integration
|
||||||
language: en
|
|
||||||
tags:
|
tags:
|
||||||
- Enterprise Integration Pattern
|
- Enterprise Integration Pattern
|
||||||
---
|
---
|
||||||
|
@ -4,7 +4,6 @@ title: EIP Publish Subscribe
|
|||||||
folder: eip-publish-subscribe
|
folder: eip-publish-subscribe
|
||||||
permalink: /patterns/eip-publish-subscribe/
|
permalink: /patterns/eip-publish-subscribe/
|
||||||
categories: Integration
|
categories: Integration
|
||||||
language: en
|
|
||||||
tags:
|
tags:
|
||||||
- Enterprise Integration Pattern
|
- Enterprise Integration Pattern
|
||||||
---
|
---
|
||||||
|
@ -4,7 +4,6 @@ title: EIP Splitter
|
|||||||
folder: eip-splitter
|
folder: eip-splitter
|
||||||
permalink: /patterns/eip-splitter/
|
permalink: /patterns/eip-splitter/
|
||||||
categories: Integration
|
categories: Integration
|
||||||
language: en
|
|
||||||
tags:
|
tags:
|
||||||
- Enterprise Integration Pattern
|
- Enterprise Integration Pattern
|
||||||
---
|
---
|
||||||
|
@ -4,7 +4,6 @@ title: EIP Wire Tap
|
|||||||
folder: eip-wire-tap
|
folder: eip-wire-tap
|
||||||
permalink: /patterns/eip-wire-tap/
|
permalink: /patterns/eip-wire-tap/
|
||||||
categories: Integration
|
categories: Integration
|
||||||
language: en
|
|
||||||
tags:
|
tags:
|
||||||
- Enterprise Integration Pattern
|
- Enterprise Integration Pattern
|
||||||
---
|
---
|
||||||
|
@ -4,7 +4,6 @@ title: Event Aggregator
|
|||||||
folder: event-aggregator
|
folder: event-aggregator
|
||||||
permalink: /patterns/event-aggregator/
|
permalink: /patterns/event-aggregator/
|
||||||
categories: Structural
|
categories: Structural
|
||||||
language: en
|
|
||||||
tags:
|
tags:
|
||||||
- Reactive
|
- Reactive
|
||||||
---
|
---
|
||||||
|
@ -4,7 +4,6 @@ title: Event-based Asynchronous
|
|||||||
folder: event-asynchronous
|
folder: event-asynchronous
|
||||||
permalink: /patterns/event-asynchronous/
|
permalink: /patterns/event-asynchronous/
|
||||||
categories: Concurrency
|
categories: Concurrency
|
||||||
language: en
|
|
||||||
tags:
|
tags:
|
||||||
- Reactive
|
- Reactive
|
||||||
---
|
---
|
||||||
|
@ -4,7 +4,6 @@ title: Event Driven Architecture
|
|||||||
folder: event-driven-architecture
|
folder: event-driven-architecture
|
||||||
permalink: /patterns/event-driven-architecture/
|
permalink: /patterns/event-driven-architecture/
|
||||||
categories: Architectural
|
categories: Architectural
|
||||||
language: en
|
|
||||||
tags:
|
tags:
|
||||||
- Reactive
|
- Reactive
|
||||||
---
|
---
|
||||||
|
@ -4,7 +4,6 @@ title: Event Queue
|
|||||||
folder: event-queue
|
folder: event-queue
|
||||||
permalink: /patterns/event-queue/
|
permalink: /patterns/event-queue/
|
||||||
categories: Concurrency
|
categories: Concurrency
|
||||||
language: en
|
|
||||||
tags:
|
tags:
|
||||||
- Game programming
|
- Game programming
|
||||||
---
|
---
|
||||||
|
@ -4,7 +4,6 @@ title: Event Sourcing
|
|||||||
folder: event-sourcing
|
folder: event-sourcing
|
||||||
permalink: /patterns/event-sourcing/
|
permalink: /patterns/event-sourcing/
|
||||||
categories: Architectural
|
categories: Architectural
|
||||||
language: en
|
|
||||||
tags:
|
tags:
|
||||||
- Performance
|
- Performance
|
||||||
- Cloud distributed
|
- Cloud distributed
|
||||||
|
@ -4,7 +4,6 @@ title: Execute Around
|
|||||||
folder: execute-around
|
folder: execute-around
|
||||||
permalink: /patterns/execute-around/
|
permalink: /patterns/execute-around/
|
||||||
categories: Idiom
|
categories: Idiom
|
||||||
language: en
|
|
||||||
tags:
|
tags:
|
||||||
- Extensibility
|
- Extensibility
|
||||||
---
|
---
|
||||||
|
@ -4,7 +4,6 @@ title: Extension objects
|
|||||||
folder: extension-objects
|
folder: extension-objects
|
||||||
permalink: /patterns/extension-objects/
|
permalink: /patterns/extension-objects/
|
||||||
categories: Behavioral
|
categories: Behavioral
|
||||||
language: en
|
|
||||||
tags:
|
tags:
|
||||||
- Extensibility
|
- Extensibility
|
||||||
---
|
---
|
||||||
|
@ -4,7 +4,6 @@ title: Facade
|
|||||||
folder: facade
|
folder: facade
|
||||||
permalink: /patterns/facade/
|
permalink: /patterns/facade/
|
||||||
categories: Structural
|
categories: Structural
|
||||||
language: en
|
|
||||||
tags:
|
tags:
|
||||||
- Gang Of Four
|
- Gang Of Four
|
||||||
- Decoupling
|
- Decoupling
|
||||||
|
@ -4,7 +4,6 @@ title: Factory Kit
|
|||||||
folder: factory-kit
|
folder: factory-kit
|
||||||
permalink: /patterns/factory-kit/
|
permalink: /patterns/factory-kit/
|
||||||
categories: Creational
|
categories: Creational
|
||||||
language: en
|
|
||||||
tags:
|
tags:
|
||||||
- Extensibility
|
- Extensibility
|
||||||
---
|
---
|
||||||
|
@ -4,7 +4,6 @@ title: Factory Method
|
|||||||
folder: factory-method
|
folder: factory-method
|
||||||
permalink: /patterns/factory-method/
|
permalink: /patterns/factory-method/
|
||||||
categories: Creational
|
categories: Creational
|
||||||
language: en
|
|
||||||
tags:
|
tags:
|
||||||
- Extensibility
|
- Extensibility
|
||||||
- Gang Of Four
|
- Gang Of Four
|
||||||
|
@ -4,7 +4,6 @@ title: Factory
|
|||||||
folder: factory
|
folder: factory
|
||||||
permalink: /patterns/factory/
|
permalink: /patterns/factory/
|
||||||
categories: Creational
|
categories: Creational
|
||||||
language: en
|
|
||||||
tags:
|
tags:
|
||||||
- Gang of Four
|
- Gang of Four
|
||||||
---
|
---
|
||||||
|
@ -4,7 +4,6 @@ title: Feature Toggle
|
|||||||
folder: feature-toggle
|
folder: feature-toggle
|
||||||
permalink: /patterns/feature-toggle/
|
permalink: /patterns/feature-toggle/
|
||||||
categories: Behavioral
|
categories: Behavioral
|
||||||
language: en
|
|
||||||
tags:
|
tags:
|
||||||
- Extensibility
|
- Extensibility
|
||||||
---
|
---
|
||||||
|
@ -4,7 +4,6 @@ title: Filterer
|
|||||||
folder: filterer
|
folder: filterer
|
||||||
permalink: /patterns/filterer/
|
permalink: /patterns/filterer/
|
||||||
description: Design pattern that helps container-like objects to return filtered version of themselves.# short meta description that shows in Google search results
|
description: Design pattern that helps container-like objects to return filtered version of themselves.# short meta description that shows in Google search results
|
||||||
language: en
|
|
||||||
categories:
|
categories:
|
||||||
- Functional
|
- Functional
|
||||||
tags:
|
tags:
|
||||||
|
@ -4,7 +4,6 @@ title: Fluent Interface
|
|||||||
folder: fluentinterface
|
folder: fluentinterface
|
||||||
permalink: /patterns/fluentinterface/
|
permalink: /patterns/fluentinterface/
|
||||||
categories: Functional
|
categories: Functional
|
||||||
language: en
|
|
||||||
tags:
|
tags:
|
||||||
- Reactive
|
- Reactive
|
||||||
---
|
---
|
||||||
|
@ -4,7 +4,6 @@ title: Flux
|
|||||||
folder: flux
|
folder: flux
|
||||||
permalink: /patterns/flux/
|
permalink: /patterns/flux/
|
||||||
categories: Structural
|
categories: Structural
|
||||||
language: en
|
|
||||||
tags:
|
tags:
|
||||||
- Decoupling
|
- Decoupling
|
||||||
---
|
---
|
||||||
|
@ -4,7 +4,6 @@ title: Flyweight
|
|||||||
folder: flyweight
|
folder: flyweight
|
||||||
permalink: /patterns/flyweight/
|
permalink: /patterns/flyweight/
|
||||||
categories: Structural
|
categories: Structural
|
||||||
language: en
|
|
||||||
tags:
|
tags:
|
||||||
- Gang Of Four
|
- Gang Of Four
|
||||||
- Performance
|
- Performance
|
||||||
|
@ -4,7 +4,6 @@ title: Front Controller
|
|||||||
folder: front-controller
|
folder: front-controller
|
||||||
permalink: /patterns/front-controller/
|
permalink: /patterns/front-controller/
|
||||||
categories: Structural
|
categories: Structural
|
||||||
language: en
|
|
||||||
tags:
|
tags:
|
||||||
- Decoupling
|
- Decoupling
|
||||||
---
|
---
|
||||||
|
@ -4,7 +4,6 @@ title: Game Loop
|
|||||||
folder: game-loop
|
folder: game-loop
|
||||||
permalink: /patterns/game-loop/
|
permalink: /patterns/game-loop/
|
||||||
categories: Behavioral
|
categories: Behavioral
|
||||||
language: en
|
|
||||||
tags:
|
tags:
|
||||||
- Game programming
|
- Game programming
|
||||||
---
|
---
|
||||||
|
@ -4,7 +4,6 @@ title: Guarded Suspension
|
|||||||
folder: guarded-suspension
|
folder: guarded-suspension
|
||||||
permalink: /patterns/guarded-suspension/
|
permalink: /patterns/guarded-suspension/
|
||||||
categories: Concurrency
|
categories: Concurrency
|
||||||
language: en
|
|
||||||
tags:
|
tags:
|
||||||
- Decoupling
|
- Decoupling
|
||||||
---
|
---
|
||||||
|
@ -4,7 +4,6 @@ title: Half-Sync/Half-Async
|
|||||||
folder: half-sync-half-async
|
folder: half-sync-half-async
|
||||||
permalink: /patterns/half-sync-half-async/
|
permalink: /patterns/half-sync-half-async/
|
||||||
categories: Concurrency
|
categories: Concurrency
|
||||||
language: en
|
|
||||||
tags:
|
tags:
|
||||||
- Performance
|
- Performance
|
||||||
---
|
---
|
||||||
|
@ -5,7 +5,6 @@ folder: hexagonal
|
|||||||
permalink: /patterns/hexagonal/
|
permalink: /patterns/hexagonal/
|
||||||
pumlformat: svg
|
pumlformat: svg
|
||||||
categories: Architectural
|
categories: Architectural
|
||||||
language: en
|
|
||||||
tags:
|
tags:
|
||||||
- Decoupling
|
- Decoupling
|
||||||
---
|
---
|
||||||
|
@ -4,7 +4,6 @@ title: Intercepting Filter
|
|||||||
folder: intercepting-filter
|
folder: intercepting-filter
|
||||||
permalink: /patterns/intercepting-filter/
|
permalink: /patterns/intercepting-filter/
|
||||||
categories: Behavioral
|
categories: Behavioral
|
||||||
language: en
|
|
||||||
tags:
|
tags:
|
||||||
- Decoupling
|
- Decoupling
|
||||||
---
|
---
|
||||||
|
@ -4,7 +4,6 @@ title: Interpreter
|
|||||||
folder: interpreter
|
folder: interpreter
|
||||||
permalink: /patterns/interpreter/
|
permalink: /patterns/interpreter/
|
||||||
categories: Behavioral
|
categories: Behavioral
|
||||||
language: en
|
|
||||||
tags:
|
tags:
|
||||||
- Gang of Four
|
- Gang of Four
|
||||||
---
|
---
|
||||||
|
@ -4,7 +4,6 @@ title: Iterator
|
|||||||
folder: iterator
|
folder: iterator
|
||||||
permalink: /patterns/iterator/
|
permalink: /patterns/iterator/
|
||||||
categories: Behavioral
|
categories: Behavioral
|
||||||
language: en
|
|
||||||
tags:
|
tags:
|
||||||
- Gang of Four
|
- Gang of Four
|
||||||
---
|
---
|
||||||
|
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user