Compare commits
4 Commits
vuepress
...
all-contri
Author | SHA1 | Date | |
---|---|---|---|
3af7b3f316 | |||
36336cc04b | |||
5a644f1092 | |||
cab9048e06 |
@ -1631,6 +1631,15 @@
|
|||||||
"contributions": [
|
"contributions": [
|
||||||
"translation"
|
"translation"
|
||||||
]
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"login": "sims-keshri",
|
||||||
|
"name": "Simran Keshri",
|
||||||
|
"avatar_url": "https://avatars.githubusercontent.com/u/62168475?v=4",
|
||||||
|
"profile": "https://github.com/sims-keshri",
|
||||||
|
"contributions": [
|
||||||
|
"code"
|
||||||
|
]
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
"contributorsPerLine": 4,
|
"contributorsPerLine": 4,
|
||||||
|
@ -10,7 +10,7 @@
|
|||||||
[](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/>
|
||||||
@ -343,6 +343,7 @@ This project is licensed under the terms of the MIT license.
|
|||||||
<td align="center"><a href="https://github.com/Conhan93"><img src="https://avatars.githubusercontent.com/u/71334757?v=4?s=100" width="100px;" alt=""/><br /><sub><b>Conny Hansson</b></sub></a><br /><a href="https://github.com/iluwatar/java-design-patterns/commits?author=Conhan93" title="Documentation">📖</a></td>
|
<td align="center"><a href="https://github.com/Conhan93"><img src="https://avatars.githubusercontent.com/u/71334757?v=4?s=100" width="100px;" alt=""/><br /><sub><b>Conny Hansson</b></sub></a><br /><a href="https://github.com/iluwatar/java-design-patterns/commits?author=Conhan93" title="Documentation">📖</a></td>
|
||||||
<td align="center"><a href="http://muklasr.medium.com"><img src="https://avatars.githubusercontent.com/u/43443753?v=4?s=100" width="100px;" alt=""/><br /><sub><b>Muklas Rahmanto</b></sub></a><br /><a href="#translation-muklasr" title="Translation">🌍</a></td>
|
<td align="center"><a href="http://muklasr.medium.com"><img src="https://avatars.githubusercontent.com/u/43443753?v=4?s=100" width="100px;" alt=""/><br /><sub><b>Muklas Rahmanto</b></sub></a><br /><a href="#translation-muklasr" title="Translation">🌍</a></td>
|
||||||
<td align="center"><a href="https://github.com/VxDxK"><img src="https://avatars.githubusercontent.com/u/38704817?v=4?s=100" width="100px;" alt=""/><br /><sub><b>Vadim</b></sub></a><br /><a href="#translation-VxDxK" title="Translation">🌍</a></td>
|
<td align="center"><a href="https://github.com/VxDxK"><img src="https://avatars.githubusercontent.com/u/38704817?v=4?s=100" width="100px;" alt=""/><br /><sub><b>Vadim</b></sub></a><br /><a href="#translation-VxDxK" title="Translation">🌍</a></td>
|
||||||
|
<td align="center"><a href="https://github.com/sims-keshri"><img src="https://avatars.githubusercontent.com/u/62168475?v=4?s=100" width="100px;" alt=""/><br /><sub><b>Simran Keshri</b></sub></a><br /><a href="https://github.com/iluwatar/java-design-patterns/commits?author=sims-keshri" title="Code">💻</a></td>
|
||||||
</tr>
|
</tr>
|
||||||
</table>
|
</table>
|
||||||
|
|
||||||
|
@ -59,9 +59,12 @@ import lombok.extern.slf4j.Slf4j;
|
|||||||
@Slf4j
|
@Slf4j
|
||||||
public class App {
|
public class App {
|
||||||
|
|
||||||
|
private static final String ROCKET_LAUNCH_LOG_PATTERN = "Space rocket <%s> launched successfully";
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Program entry point.
|
* Program entry point.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
public static void main(String[] args) throws Exception {
|
public static void main(String[] args) throws Exception {
|
||||||
// construct a new executor that will run async tasks
|
// construct a new executor that will run async tasks
|
||||||
var executor = new ThreadAsyncExecutor();
|
var executor = new ThreadAsyncExecutor();
|
||||||
@ -87,9 +90,9 @@ public class App {
|
|||||||
asyncResult5.await();
|
asyncResult5.await();
|
||||||
|
|
||||||
// log the results of the tasks, callbacks log immediately when complete
|
// log the results of the tasks, callbacks log immediately when complete
|
||||||
log("Space rocket <" + result1 + "> launch complete");
|
log(String.format(ROCKET_LAUNCH_LOG_PATTERN, result1));
|
||||||
log("Space rocket <" + result2 + "> launch complete");
|
log(String.format(ROCKET_LAUNCH_LOG_PATTERN, result2));
|
||||||
log("Space rocket <" + result3 + "> launch complete");
|
log(String.format(ROCKET_LAUNCH_LOG_PATTERN, result3));
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -102,7 +105,7 @@ public class App {
|
|||||||
private static <T> Callable<T> lazyval(T value, long delayMillis) {
|
private static <T> Callable<T> lazyval(T value, long delayMillis) {
|
||||||
return () -> {
|
return () -> {
|
||||||
Thread.sleep(delayMillis);
|
Thread.sleep(delayMillis);
|
||||||
log("Space rocket <" + value + "> launched successfully");
|
log(String.format(ROCKET_LAUNCH_LOG_PATTERN, value));
|
||||||
return value;
|
return value;
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
@ -42,6 +42,14 @@ import lombok.extern.slf4j.Slf4j;
|
|||||||
@Slf4j
|
@Slf4j
|
||||||
public class App {
|
public class App {
|
||||||
|
|
||||||
|
private static final String LITERAL_0 = "LITERAL 0";
|
||||||
|
private static final String HEALTH_PATTERN = "%s_HEALTH";
|
||||||
|
private static final String GET_AGILITY = "GET_AGILITY";
|
||||||
|
private static final String GET_WISDOM = "GET_WISDOM";
|
||||||
|
private static final String ADD = "ADD";
|
||||||
|
private static final String LITERAL_2 = "LITERAL 2";
|
||||||
|
private static final String DIVIDE = "DIVIDE";
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Main app method.
|
* Main app method.
|
||||||
*
|
*
|
||||||
@ -53,17 +61,17 @@ public class App {
|
|||||||
new Wizard(45, 7, 11, 0, 0),
|
new Wizard(45, 7, 11, 0, 0),
|
||||||
new Wizard(36, 18, 8, 0, 0));
|
new Wizard(36, 18, 8, 0, 0));
|
||||||
|
|
||||||
vm.execute(InstructionConverterUtil.convertToByteCode("LITERAL 0"));
|
vm.execute(InstructionConverterUtil.convertToByteCode(LITERAL_0));
|
||||||
vm.execute(InstructionConverterUtil.convertToByteCode("LITERAL 0"));
|
vm.execute(InstructionConverterUtil.convertToByteCode(LITERAL_0));
|
||||||
vm.execute(InstructionConverterUtil.convertToByteCode("GET_HEALTH"));
|
vm.execute(InstructionConverterUtil.convertToByteCode(String.format(HEALTH_PATTERN, "GET")));
|
||||||
vm.execute(InstructionConverterUtil.convertToByteCode("LITERAL 0"));
|
vm.execute(InstructionConverterUtil.convertToByteCode(LITERAL_0));
|
||||||
vm.execute(InstructionConverterUtil.convertToByteCode("GET_AGILITY"));
|
vm.execute(InstructionConverterUtil.convertToByteCode(GET_AGILITY));
|
||||||
vm.execute(InstructionConverterUtil.convertToByteCode("LITERAL 0"));
|
vm.execute(InstructionConverterUtil.convertToByteCode(LITERAL_0));
|
||||||
vm.execute(InstructionConverterUtil.convertToByteCode("GET_WISDOM"));
|
vm.execute(InstructionConverterUtil.convertToByteCode(GET_WISDOM));
|
||||||
vm.execute(InstructionConverterUtil.convertToByteCode("ADD"));
|
vm.execute(InstructionConverterUtil.convertToByteCode(ADD));
|
||||||
vm.execute(InstructionConverterUtil.convertToByteCode("LITERAL 2"));
|
vm.execute(InstructionConverterUtil.convertToByteCode(LITERAL_2));
|
||||||
vm.execute(InstructionConverterUtil.convertToByteCode("DIVIDE"));
|
vm.execute(InstructionConverterUtil.convertToByteCode(DIVIDE));
|
||||||
vm.execute(InstructionConverterUtil.convertToByteCode("ADD"));
|
vm.execute(InstructionConverterUtil.convertToByteCode(ADD));
|
||||||
vm.execute(InstructionConverterUtil.convertToByteCode("SET_HEALTH"));
|
vm.execute(InstructionConverterUtil.convertToByteCode(String.format(HEALTH_PATTERN, "SET")));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -50,6 +50,7 @@ public final class DbManager {
|
|||||||
private static boolean useMongoDB;
|
private static boolean useMongoDB;
|
||||||
|
|
||||||
private static Map<String, UserAccount> virtualDB;
|
private static Map<String, UserAccount> virtualDB;
|
||||||
|
private static final String ERROR_MESSAGE_LOG = "Error connecting to MongoDB";
|
||||||
|
|
||||||
private DbManager() {
|
private DbManager() {
|
||||||
}
|
}
|
||||||
@ -85,7 +86,7 @@ public final class DbManager {
|
|||||||
try {
|
try {
|
||||||
connect();
|
connect();
|
||||||
} catch (ParseException e) {
|
} catch (ParseException e) {
|
||||||
LOGGER.error("Error connecting to MongoDB", e);
|
LOGGER.error(ERROR_MESSAGE_LOG, e);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
var iterable = db
|
var iterable = db
|
||||||
@ -112,7 +113,7 @@ public final class DbManager {
|
|||||||
try {
|
try {
|
||||||
connect();
|
connect();
|
||||||
} catch (ParseException e) {
|
} catch (ParseException e) {
|
||||||
LOGGER.error("Error connecting to MongoDB", e);
|
LOGGER.error(ERROR_MESSAGE_LOG, e);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
db.getCollection(CachingConstants.USER_ACCOUNT).insertOne(
|
db.getCollection(CachingConstants.USER_ACCOUNT).insertOne(
|
||||||
@ -134,7 +135,7 @@ public final class DbManager {
|
|||||||
try {
|
try {
|
||||||
connect();
|
connect();
|
||||||
} catch (ParseException e) {
|
} catch (ParseException e) {
|
||||||
LOGGER.error("Error connecting to MongoDB", e);
|
LOGGER.error(ERROR_MESSAGE_LOG, e);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
db.getCollection(CachingConstants.USER_ACCOUNT).updateOne(
|
db.getCollection(CachingConstants.USER_ACCOUNT).updateOne(
|
||||||
@ -155,7 +156,7 @@ public final class DbManager {
|
|||||||
try {
|
try {
|
||||||
connect();
|
connect();
|
||||||
} catch (ParseException e) {
|
} catch (ParseException e) {
|
||||||
LOGGER.error("Error connecting to MongoDB", e);
|
LOGGER.error(ERROR_MESSAGE_LOG, e);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
db.getCollection(CachingConstants.USER_ACCOUNT).updateOne(
|
db.getCollection(CachingConstants.USER_ACCOUNT).updateOne(
|
||||||
|
@ -3,7 +3,6 @@ layout: pattern
|
|||||||
title: Data Bus
|
title: Data Bus
|
||||||
folder: data-bus
|
folder: data-bus
|
||||||
permalink: /patterns/data-bus/
|
permalink: /patterns/data-bus/
|
||||||
|
|
||||||
categories: Architectural
|
categories: Architectural
|
||||||
language: en
|
language: en
|
||||||
tags:
|
tags:
|
||||||
|
@ -3,10 +3,8 @@ layout: pattern
|
|||||||
title: Filterer
|
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
|
|
||||||
language: en
|
language: en
|
||||||
categories:
|
categories: Functional
|
||||||
- Functional
|
|
||||||
tags:
|
tags:
|
||||||
- Extensibility
|
- Extensibility
|
||||||
---
|
---
|
||||||
|
@ -3,6 +3,7 @@ layout: pattern
|
|||||||
title: Lockable Object
|
title: Lockable Object
|
||||||
folder: lockable-object
|
folder: lockable-object
|
||||||
permalink: /patterns/lockable-object/
|
permalink: /patterns/lockable-object/
|
||||||
|
language: en
|
||||||
categories: Concurrency
|
categories: Concurrency
|
||||||
tags:
|
tags:
|
||||||
- Performance
|
- Performance
|
||||||
|
@ -8,6 +8,7 @@ language: en
|
|||||||
tags:
|
tags:
|
||||||
- Decoupling
|
- Decoupling
|
||||||
---
|
---
|
||||||
|
|
||||||
## Also known as
|
## Also known as
|
||||||
Application Model
|
Application Model
|
||||||
|
|
||||||
|
@ -4,9 +4,11 @@ title: Table Module
|
|||||||
folder: table-module
|
folder: table-module
|
||||||
permalink: /patterns/table-module/
|
permalink: /patterns/table-module/
|
||||||
categories: Structural
|
categories: Structural
|
||||||
|
language: en
|
||||||
tags:
|
tags:
|
||||||
- Data access
|
- Data access
|
||||||
---
|
---
|
||||||
|
|
||||||
## Intent
|
## Intent
|
||||||
Table Module organizes domain logic with one class per table in the database, and a single instance of a class contains the various procedures that will act on the data.
|
Table Module organizes domain logic with one class per table in the database, and a single instance of a class contains the various procedures that will act on the data.
|
||||||
|
|
||||||
|
@ -3,7 +3,6 @@ layout: pattern
|
|||||||
title: Unit Of Work
|
title: Unit Of Work
|
||||||
folder: unit-of-work
|
folder: unit-of-work
|
||||||
permalink: /patterns/unit-of-work/
|
permalink: /patterns/unit-of-work/
|
||||||
|
|
||||||
categories: Architectural
|
categories: Architectural
|
||||||
language: en
|
language: en
|
||||||
tags:
|
tags:
|
||||||
|
@ -1,10 +1,8 @@
|
|||||||
---
|
---
|
||||||
layout: pattern
|
layout: pattern
|
||||||
title: Version Number
|
title: Version Number
|
||||||
folder: versionnumber
|
folder: version-number
|
||||||
permalink: /patterns/versionnumber/
|
permalink: /patterns/version-number/
|
||||||
description: Entity versioning with version number
|
|
||||||
|
|
||||||
categories: Concurrency
|
categories: Concurrency
|
||||||
language: en
|
language: en
|
||||||
tags:
|
tags:
|
||||||
|
Reference in New Issue
Block a user