From f42c34059829607d373dc827d06a8df97cf36047 Mon Sep 17 00:00:00 2001 From: Ilkka Seppala Date: Sat, 23 Aug 2014 19:13:09 +0300 Subject: [PATCH] updated flyweight sample --- .../main/java/com/iluwatar/AlchemistShop.java | 29 ++++++++++--------- .../main/java/com/iluwatar/HealingPotion.java | 2 +- .../java/com/iluwatar/HolyWaterPotion.java | 2 +- .../java/com/iluwatar/InvisibilityPotion.java | 2 +- .../main/java/com/iluwatar/PoisonPotion.java | 2 +- .../main/java/com/iluwatar/PotionFactory.java | 5 ++++ .../java/com/iluwatar/StrengthPotion.java | 2 +- 7 files changed, 26 insertions(+), 18 deletions(-) diff --git a/flyweight/src/main/java/com/iluwatar/AlchemistShop.java b/flyweight/src/main/java/com/iluwatar/AlchemistShop.java index d2cee5765..62c01c772 100644 --- a/flyweight/src/main/java/com/iluwatar/AlchemistShop.java +++ b/flyweight/src/main/java/com/iluwatar/AlchemistShop.java @@ -15,20 +15,23 @@ public class AlchemistShop { } private void fillShelves() { - topShelf.add(new InvisibilityPotion()); - topShelf.add(new InvisibilityPotion()); - topShelf.add(new StrengthPotion()); - topShelf.add(new HealingPotion()); - topShelf.add(new InvisibilityPotion()); - topShelf.add(new StrengthPotion()); - topShelf.add(new HealingPotion()); - topShelf.add(new HealingPotion()); - bottomShelf.add(new PoisonPotion()); - bottomShelf.add(new PoisonPotion()); - bottomShelf.add(new PoisonPotion()); - bottomShelf.add(new HolyWaterPotion()); - bottomShelf.add(new HolyWaterPotion()); + PotionFactory factory = new PotionFactory(); + + topShelf.add(factory.createPotion(PotionType.INVISIBILITY)); + topShelf.add(factory.createPotion(PotionType.INVISIBILITY)); + topShelf.add(factory.createPotion(PotionType.STRENGTH)); + topShelf.add(factory.createPotion(PotionType.HEALING)); + topShelf.add(factory.createPotion(PotionType.INVISIBILITY)); + topShelf.add(factory.createPotion(PotionType.STRENGTH)); + topShelf.add(factory.createPotion(PotionType.HEALING)); + topShelf.add(factory.createPotion(PotionType.HEALING)); + + bottomShelf.add(factory.createPotion(PotionType.POISON)); + bottomShelf.add(factory.createPotion(PotionType.POISON)); + bottomShelf.add(factory.createPotion(PotionType.POISON)); + bottomShelf.add(factory.createPotion(PotionType.HOLY_WATER)); + bottomShelf.add(factory.createPotion(PotionType.HOLY_WATER)); } public void enumerate() { diff --git a/flyweight/src/main/java/com/iluwatar/HealingPotion.java b/flyweight/src/main/java/com/iluwatar/HealingPotion.java index f4a82339a..944dea751 100644 --- a/flyweight/src/main/java/com/iluwatar/HealingPotion.java +++ b/flyweight/src/main/java/com/iluwatar/HealingPotion.java @@ -4,7 +4,7 @@ public class HealingPotion implements Potion { @Override public void drink() { - System.out.println("You feel healed."); + System.out.println("You feel healed. (Potion=" + System.identityHashCode(this) + ")"); } } diff --git a/flyweight/src/main/java/com/iluwatar/HolyWaterPotion.java b/flyweight/src/main/java/com/iluwatar/HolyWaterPotion.java index ba861f6be..27b185a94 100644 --- a/flyweight/src/main/java/com/iluwatar/HolyWaterPotion.java +++ b/flyweight/src/main/java/com/iluwatar/HolyWaterPotion.java @@ -4,7 +4,7 @@ public class HolyWaterPotion implements Potion { @Override public void drink() { - System.out.println("You feel blessed."); + System.out.println("You feel blessed. (Potion=" + System.identityHashCode(this) + ")"); } } diff --git a/flyweight/src/main/java/com/iluwatar/InvisibilityPotion.java b/flyweight/src/main/java/com/iluwatar/InvisibilityPotion.java index f5f2bcec3..7796b5beb 100644 --- a/flyweight/src/main/java/com/iluwatar/InvisibilityPotion.java +++ b/flyweight/src/main/java/com/iluwatar/InvisibilityPotion.java @@ -4,7 +4,7 @@ public class InvisibilityPotion implements Potion { @Override public void drink() { - System.out.println("You become invisible."); + System.out.println("You become invisible. (Potion=" + System.identityHashCode(this) + ")"); } } diff --git a/flyweight/src/main/java/com/iluwatar/PoisonPotion.java b/flyweight/src/main/java/com/iluwatar/PoisonPotion.java index 733f1234e..728b0d00b 100644 --- a/flyweight/src/main/java/com/iluwatar/PoisonPotion.java +++ b/flyweight/src/main/java/com/iluwatar/PoisonPotion.java @@ -4,7 +4,7 @@ public class PoisonPotion implements Potion { @Override public void drink() { - System.out.println("Urgh! This is poisonous."); + System.out.println("Urgh! This is poisonous. (Potion=" + System.identityHashCode(this) + ")"); } } diff --git a/flyweight/src/main/java/com/iluwatar/PotionFactory.java b/flyweight/src/main/java/com/iluwatar/PotionFactory.java index 6d067b7fa..54d98f411 100644 --- a/flyweight/src/main/java/com/iluwatar/PotionFactory.java +++ b/flyweight/src/main/java/com/iluwatar/PotionFactory.java @@ -16,18 +16,23 @@ public class PotionFactory { switch (type) { case HEALING: potion = new HealingPotion(); + potions.put(type, potion); break; case HOLY_WATER: potion = new HolyWaterPotion(); + potions.put(type, potion); break; case INVISIBILITY: potion = new InvisibilityPotion(); + potions.put(type, potion); break; case POISON: potion = new PoisonPotion(); + potions.put(type, potion); break; case STRENGTH: potion = new StrengthPotion(); + potions.put(type, potion); break; default: break; diff --git a/flyweight/src/main/java/com/iluwatar/StrengthPotion.java b/flyweight/src/main/java/com/iluwatar/StrengthPotion.java index 1b90b0269..0709b5b53 100644 --- a/flyweight/src/main/java/com/iluwatar/StrengthPotion.java +++ b/flyweight/src/main/java/com/iluwatar/StrengthPotion.java @@ -4,7 +4,7 @@ public class StrengthPotion implements Potion { @Override public void drink() { - System.out.println("You feel strong."); + System.out.println("You feel strong. (Potion=" + System.identityHashCode(this) + ")"); } }