Merge branch 'master' of https://github.com/iluwatar/java-design-patterns
This commit is contained in:
@@ -1712,6 +1712,15 @@
|
|||||||
"contributions": [
|
"contributions": [
|
||||||
"doc"
|
"doc"
|
||||||
]
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"login": "harshalkh",
|
||||||
|
"name": "Harshal",
|
||||||
|
"avatar_url": "https://avatars.githubusercontent.com/u/37841724?v=4",
|
||||||
|
"profile": "https://github.com/harshalkh",
|
||||||
|
"contributions": [
|
||||||
|
"code"
|
||||||
|
]
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
"contributorsPerLine": 7,
|
"contributorsPerLine": 7,
|
||||||
|
@@ -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/>
|
||||||
@@ -316,6 +316,7 @@ This project is licensed under the terms of the MIT license.
|
|||||||
<td align="center"><a href="https://github.com/blueberry404"><img src="https://avatars.githubusercontent.com/u/39243539?v=4?s=100" width="100px;" alt=""/><br /><sub><b>Anum Amin</b></sub></a><br /><a href="https://github.com/iluwatar/java-design-patterns/commits?author=blueberry404" title="Documentation">📖</a></td>
|
<td align="center"><a href="https://github.com/blueberry404"><img src="https://avatars.githubusercontent.com/u/39243539?v=4?s=100" width="100px;" alt=""/><br /><sub><b>Anum Amin</b></sub></a><br /><a href="https://github.com/iluwatar/java-design-patterns/commits?author=blueberry404" title="Documentation">📖</a></td>
|
||||||
<td align="center"><a href="https://uh-zz.github.io/blog/"><img src="https://avatars.githubusercontent.com/u/47747828?v=4?s=100" width="100px;" alt=""/><br /><sub><b>Reo Uehara</b></sub></a><br /><a href="#translation-uh-zz" title="Translation">🌍</a></td>
|
<td align="center"><a href="https://uh-zz.github.io/blog/"><img src="https://avatars.githubusercontent.com/u/47747828?v=4?s=100" width="100px;" alt=""/><br /><sub><b>Reo Uehara</b></sub></a><br /><a href="#translation-uh-zz" title="Translation">🌍</a></td>
|
||||||
<td align="center"><a href="https://github.com/Fiordy"><img src="https://avatars.githubusercontent.com/u/53420573?v=4?s=100" width="100px;" alt=""/><br /><sub><b>Fiordy</b></sub></a><br /><a href="https://github.com/iluwatar/java-design-patterns/commits?author=Fiordy" title="Documentation">📖</a></td>
|
<td align="center"><a href="https://github.com/Fiordy"><img src="https://avatars.githubusercontent.com/u/53420573?v=4?s=100" width="100px;" alt=""/><br /><sub><b>Fiordy</b></sub></a><br /><a href="https://github.com/iluwatar/java-design-patterns/commits?author=Fiordy" title="Documentation">📖</a></td>
|
||||||
|
<td align="center"><a href="https://github.com/harshalkh"><img src="https://avatars.githubusercontent.com/u/37841724?v=4?s=100" width="100px;" alt=""/><br /><sub><b>Harshal</b></sub></a><br /><a href="https://github.com/iluwatar/java-design-patterns/commits?author=harshalkh" title="Code">💻</a></td>
|
||||||
</tr>
|
</tr>
|
||||||
</table>
|
</table>
|
||||||
|
|
||||||
|
@@ -41,6 +41,8 @@ import lombok.extern.slf4j.Slf4j;
|
|||||||
@Slf4j
|
@Slf4j
|
||||||
public class App {
|
public class App {
|
||||||
|
|
||||||
|
private static final String MANUFACTURED = "{} manufactured {}";
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Program entry point.
|
* Program entry point.
|
||||||
* @param args command line args
|
* @param args command line args
|
||||||
@@ -49,14 +51,14 @@ public class App {
|
|||||||
|
|
||||||
Blacksmith blacksmith = new OrcBlacksmith();
|
Blacksmith blacksmith = new OrcBlacksmith();
|
||||||
Weapon weapon = blacksmith.manufactureWeapon(WeaponType.SPEAR);
|
Weapon weapon = blacksmith.manufactureWeapon(WeaponType.SPEAR);
|
||||||
LOGGER.info("{} manufactured {}", blacksmith, weapon);
|
LOGGER.info(MANUFACTURED, blacksmith, weapon);
|
||||||
weapon = blacksmith.manufactureWeapon(WeaponType.AXE);
|
weapon = blacksmith.manufactureWeapon(WeaponType.AXE);
|
||||||
LOGGER.info("{} manufactured {}", blacksmith, weapon);
|
LOGGER.info(MANUFACTURED, blacksmith, weapon);
|
||||||
|
|
||||||
blacksmith = new ElfBlacksmith();
|
blacksmith = new ElfBlacksmith();
|
||||||
weapon = blacksmith.manufactureWeapon(WeaponType.SPEAR);
|
weapon = blacksmith.manufactureWeapon(WeaponType.SPEAR);
|
||||||
LOGGER.info("{} manufactured {}", blacksmith, weapon);
|
LOGGER.info(MANUFACTURED, blacksmith, weapon);
|
||||||
weapon = blacksmith.manufactureWeapon(WeaponType.AXE);
|
weapon = blacksmith.manufactureWeapon(WeaponType.AXE);
|
||||||
LOGGER.info("{} manufactured {}", blacksmith, weapon);
|
LOGGER.info(MANUFACTURED, blacksmith, weapon);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@@ -41,6 +41,10 @@ import lombok.extern.slf4j.Slf4j;
|
|||||||
@Slf4j
|
@Slf4j
|
||||||
public class App {
|
public class App {
|
||||||
|
|
||||||
|
private static final String RED_DRAGON_EMERGES = "Red dragon emerges.";
|
||||||
|
private static final String GREEN_DRAGON_SPOTTED = "Green dragon spotted ahead!";
|
||||||
|
private static final String BLACK_DRAGON_LANDS = "Black dragon lands before you.";
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Program entry point.
|
* Program entry point.
|
||||||
*
|
*
|
||||||
@@ -48,38 +52,38 @@ public class App {
|
|||||||
*/
|
*/
|
||||||
public static void main(String[] args) {
|
public static void main(String[] args) {
|
||||||
// GoF Strategy pattern
|
// GoF Strategy pattern
|
||||||
LOGGER.info("Green dragon spotted ahead!");
|
LOGGER.info(GREEN_DRAGON_SPOTTED);
|
||||||
var dragonSlayer = new DragonSlayer(new MeleeStrategy());
|
var dragonSlayer = new DragonSlayer(new MeleeStrategy());
|
||||||
dragonSlayer.goToBattle();
|
dragonSlayer.goToBattle();
|
||||||
LOGGER.info("Red dragon emerges.");
|
LOGGER.info(RED_DRAGON_EMERGES);
|
||||||
dragonSlayer.changeStrategy(new ProjectileStrategy());
|
dragonSlayer.changeStrategy(new ProjectileStrategy());
|
||||||
dragonSlayer.goToBattle();
|
dragonSlayer.goToBattle();
|
||||||
LOGGER.info("Black dragon lands before you.");
|
LOGGER.info(BLACK_DRAGON_LANDS);
|
||||||
dragonSlayer.changeStrategy(new SpellStrategy());
|
dragonSlayer.changeStrategy(new SpellStrategy());
|
||||||
dragonSlayer.goToBattle();
|
dragonSlayer.goToBattle();
|
||||||
|
|
||||||
// Java 8 functional implementation Strategy pattern
|
// Java 8 functional implementation Strategy pattern
|
||||||
LOGGER.info("Green dragon spotted ahead!");
|
LOGGER.info(GREEN_DRAGON_SPOTTED);
|
||||||
dragonSlayer = new DragonSlayer(
|
dragonSlayer = new DragonSlayer(
|
||||||
() -> LOGGER.info("With your Excalibur you severe the dragon's head!"));
|
() -> LOGGER.info("With your Excalibur you severe the dragon's head!"));
|
||||||
dragonSlayer.goToBattle();
|
dragonSlayer.goToBattle();
|
||||||
LOGGER.info("Red dragon emerges.");
|
LOGGER.info(RED_DRAGON_EMERGES);
|
||||||
dragonSlayer.changeStrategy(() -> LOGGER.info(
|
dragonSlayer.changeStrategy(() -> LOGGER.info(
|
||||||
"You shoot the dragon with the magical crossbow and it falls dead on the ground!"));
|
"You shoot the dragon with the magical crossbow and it falls dead on the ground!"));
|
||||||
dragonSlayer.goToBattle();
|
dragonSlayer.goToBattle();
|
||||||
LOGGER.info("Black dragon lands before you.");
|
LOGGER.info(BLACK_DRAGON_LANDS);
|
||||||
dragonSlayer.changeStrategy(() -> LOGGER.info(
|
dragonSlayer.changeStrategy(() -> LOGGER.info(
|
||||||
"You cast the spell of disintegration and the dragon vaporizes in a pile of dust!"));
|
"You cast the spell of disintegration and the dragon vaporizes in a pile of dust!"));
|
||||||
dragonSlayer.goToBattle();
|
dragonSlayer.goToBattle();
|
||||||
|
|
||||||
// Java 8 lambda implementation with enum Strategy pattern
|
// Java 8 lambda implementation with enum Strategy pattern
|
||||||
LOGGER.info("Green dragon spotted ahead!");
|
LOGGER.info(GREEN_DRAGON_SPOTTED);
|
||||||
dragonSlayer.changeStrategy(LambdaStrategy.Strategy.MeleeStrategy);
|
dragonSlayer.changeStrategy(LambdaStrategy.Strategy.MeleeStrategy);
|
||||||
dragonSlayer.goToBattle();
|
dragonSlayer.goToBattle();
|
||||||
LOGGER.info("Red dragon emerges.");
|
LOGGER.info(RED_DRAGON_EMERGES);
|
||||||
dragonSlayer.changeStrategy(LambdaStrategy.Strategy.ProjectileStrategy);
|
dragonSlayer.changeStrategy(LambdaStrategy.Strategy.ProjectileStrategy);
|
||||||
dragonSlayer.goToBattle();
|
dragonSlayer.goToBattle();
|
||||||
LOGGER.info("Black dragon lands before you.");
|
LOGGER.info(BLACK_DRAGON_LANDS);
|
||||||
dragonSlayer.changeStrategy(LambdaStrategy.Strategy.SpellStrategy);
|
dragonSlayer.changeStrategy(LambdaStrategy.Strategy.SpellStrategy);
|
||||||
dragonSlayer.goToBattle();
|
dragonSlayer.goToBattle();
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user