diff --git a/decorator/src/main/java/com/iluwatar/decorator/App.java b/decorator/src/main/java/com/iluwatar/decorator/App.java index 88e1c710317558aee42456c24a438e5324a482a6..a9eabf6068c06497dd27dea9148318d092a2bba5 100644 --- a/decorator/src/main/java/com/iluwatar/decorator/App.java +++ b/decorator/src/main/java/com/iluwatar/decorator/App.java @@ -23,11 +23,13 @@ public class App { Hostile troll = new Troll(); troll.attack(); troll.fleeBattle(); + System.out.printf("Simple troll power %d.\n", troll.getAttackPower()); // change the behavior of the simple troll by adding a decorator System.out.println("\nA smart looking troll surprises you."); Hostile smart = new SmartTroll(troll); smart.attack(); smart.fleeBattle(); + System.out.printf("Smart troll power %d.\n", smart.getAttackPower()); } } diff --git a/decorator/src/main/java/com/iluwatar/decorator/Hostile.java b/decorator/src/main/java/com/iluwatar/decorator/Hostile.java index 4df751cca69da2f669768dbd19d3a1216843ca8e..7090725017f4c64a22c28167807e894d642a9b4e 100644 --- a/decorator/src/main/java/com/iluwatar/decorator/Hostile.java +++ b/decorator/src/main/java/com/iluwatar/decorator/Hostile.java @@ -9,6 +9,8 @@ public interface Hostile { void attack(); + int getAttackPower(); + void fleeBattle(); } diff --git a/decorator/src/main/java/com/iluwatar/decorator/SmartTroll.java b/decorator/src/main/java/com/iluwatar/decorator/SmartTroll.java index 22ba88dc88b806c74798b3e093f11692e48927a5..909f94c952ff11990157d15ea3528f7312644ed2 100644 --- a/decorator/src/main/java/com/iluwatar/decorator/SmartTroll.java +++ b/decorator/src/main/java/com/iluwatar/decorator/SmartTroll.java @@ -21,6 +21,12 @@ public class SmartTroll implements Hostile { decorated.attack(); } + @Override + public int getAttackPower() { + // decorated troll power + 20 because it is smart + return decorated.getAttackPower() + 20; + } + @Override public void fleeBattle() { System.out.println("The troll calls for help!"); diff --git a/decorator/src/main/java/com/iluwatar/decorator/Troll.java b/decorator/src/main/java/com/iluwatar/decorator/Troll.java index 11e9b9d1afdfe4ce5f1819f99c1bf4f320c6cb6a..85d873dbe5c13af335707d41ba9cfcd80c531f7f 100644 --- a/decorator/src/main/java/com/iluwatar/decorator/Troll.java +++ b/decorator/src/main/java/com/iluwatar/decorator/Troll.java @@ -11,6 +11,11 @@ public class Troll implements Hostile { System.out.println("The troll swings at you with a club!"); } + @Override + public int getAttackPower() { + return 10; + } + public void fleeBattle() { System.out.println("The troll shrieks in horror and runs away!"); }