From 823afa42733368ca7dccb032f03789af0e3ace01 Mon Sep 17 00:00:00 2001 From: Erol Shaban Date: Wed, 21 Aug 2019 17:25:53 +0200 Subject: [PATCH] README initialized --- Java/src/README.md | 12 +++++++++++ .../java/com/gildedrose/AgedBrieUpdater.java | 4 ++-- .../com/gildedrose/CustomItemUpdater.java | 2 +- .../main/java/com/gildedrose/ItemUpdater.java | 2 +- .../com/gildedrose/ItemUpdaterFactory.java | 20 +++++++++---------- .../com/gildedrose/LegendaryItemUpdater.java | 4 ++-- .../com/gildedrose/StandardItemUpdater.java | 8 ++++---- .../java/com/gildedrose/SulfurasUpdater.java | 6 +++--- 8 files changed, 35 insertions(+), 23 deletions(-) diff --git a/Java/src/README.md b/Java/src/README.md index e69de29b..48bd7058 100644 --- a/Java/src/README.md +++ b/Java/src/README.md @@ -0,0 +1,12 @@ +## Gilded Rose Kata - Java + +### How to add a new updater +Within this version of Gilded Rose kata, template method pattern is used + +From now on it is easy to add another standard, custom or legendary items to the shop. +How to do that; + +* Add a new Updater class which extends either `StandardItemUpdater`, `CustomItemUpdater` or `LegendaryItemUpdater` +* Implement required methods as your requirement. +* Add a new registry to `registeredItemUpdaters` via `ItemUpdaterFactory.registerCustomUpdater()` +* You are ready to call `updateQuality()` method of a `GildedRose` instance. diff --git a/Java/src/main/java/com/gildedrose/AgedBrieUpdater.java b/Java/src/main/java/com/gildedrose/AgedBrieUpdater.java index 19975816..38344efa 100644 --- a/Java/src/main/java/com/gildedrose/AgedBrieUpdater.java +++ b/Java/src/main/java/com/gildedrose/AgedBrieUpdater.java @@ -8,12 +8,12 @@ public class AgedBrieUpdater extends CustomItemUpdater { } @Override - boolean canUpdateQuality(Item item) { + boolean canUpdateQuality(final Item item) { return item.quality < HIGHEST_QUALITY; } @Override - int getUpdateValue(Item item) { + int getUpdateValue(final Item item) { return INCREASE_NORMAL; } } diff --git a/Java/src/main/java/com/gildedrose/CustomItemUpdater.java b/Java/src/main/java/com/gildedrose/CustomItemUpdater.java index f7de3e87..ab6761d5 100644 --- a/Java/src/main/java/com/gildedrose/CustomItemUpdater.java +++ b/Java/src/main/java/com/gildedrose/CustomItemUpdater.java @@ -1,7 +1,7 @@ package com.gildedrose; public abstract class CustomItemUpdater extends ItemUpdater{ - int getNewQuality(Item item){ + int getNewQuality(final Item item){ return Math.min(item.quality + getUpdateValue(item), HIGHEST_QUALITY); } } diff --git a/Java/src/main/java/com/gildedrose/ItemUpdater.java b/Java/src/main/java/com/gildedrose/ItemUpdater.java index 1e9b209d..409ea2d7 100644 --- a/Java/src/main/java/com/gildedrose/ItemUpdater.java +++ b/Java/src/main/java/com/gildedrose/ItemUpdater.java @@ -1,6 +1,6 @@ package com.gildedrose; -public abstract class ItemUpdater { +abstract class ItemUpdater { static int HIGHEST_QUALITY = 50; static int MIN_QUALITY = 0; static int DEGRADE_NORMAL = -1; diff --git a/Java/src/main/java/com/gildedrose/ItemUpdaterFactory.java b/Java/src/main/java/com/gildedrose/ItemUpdaterFactory.java index 7d54cdaa..725416e0 100644 --- a/Java/src/main/java/com/gildedrose/ItemUpdaterFactory.java +++ b/Java/src/main/java/com/gildedrose/ItemUpdaterFactory.java @@ -4,22 +4,22 @@ import java.util.HashMap; import java.util.Map; import java.util.Optional; -public class ItemUpdaterFactory { +class ItemUpdaterFactory { - private static final Map registeredCustomUpdaters = new HashMap<>(); + private static final Map registeredItemUpdaters = new HashMap<>(); static { - registeredCustomUpdaters.put("Aged Brie", new AgedBrieUpdater()); - registeredCustomUpdaters.put("Backstage passes to a TAFKAL80ETC concert", new BackstagePassUpdater()); - registeredCustomUpdaters.put("Sulfuras, Hand of Ragnaros", new SulfurasUpdater()); - registeredCustomUpdaters.put("Conjured Mana Cake", new ConjuredUpdater()); + registeredItemUpdaters.put("Aged Brie", new AgedBrieUpdater()); + registeredItemUpdaters.put("Backstage passes to a TAFKAL80ETC concert", new BackstagePassUpdater()); + registeredItemUpdaters.put("Sulfuras, Hand of Ragnaros", new SulfurasUpdater()); + registeredItemUpdaters.put("Conjured Mana Cake", new ConjuredUpdater()); } - public static void registerCustomUpdater(String type, ItemUpdater updater ){ - registeredCustomUpdaters.put(type, updater); + static void registerCustomUpdater(final String type, final ItemUpdater updater){ + registeredItemUpdaters.put(type, updater); } - public static ItemUpdater getItemUpdater(Item item) { - return Optional.ofNullable(registeredCustomUpdaters.get(item.name)) + static ItemUpdater getItemUpdater(final Item item) { + return Optional.ofNullable(registeredItemUpdaters.get(item.name)) .orElse(new StandardItemUpdater()); } } diff --git a/Java/src/main/java/com/gildedrose/LegendaryItemUpdater.java b/Java/src/main/java/com/gildedrose/LegendaryItemUpdater.java index 224c5a28..93af09df 100644 --- a/Java/src/main/java/com/gildedrose/LegendaryItemUpdater.java +++ b/Java/src/main/java/com/gildedrose/LegendaryItemUpdater.java @@ -1,9 +1,9 @@ package com.gildedrose; -public abstract class LegendaryItemUpdater extends ItemUpdater{ +abstract class LegendaryItemUpdater extends ItemUpdater{ static int HIGHEST_QUALITY = 80; - int getNewQuality(Item item){ + int getNewQuality(final Item item){ return Math.min(item.quality + getUpdateValue(item), HIGHEST_QUALITY); } } diff --git a/Java/src/main/java/com/gildedrose/StandardItemUpdater.java b/Java/src/main/java/com/gildedrose/StandardItemUpdater.java index 04f14b15..e2f0da37 100644 --- a/Java/src/main/java/com/gildedrose/StandardItemUpdater.java +++ b/Java/src/main/java/com/gildedrose/StandardItemUpdater.java @@ -1,6 +1,6 @@ package com.gildedrose; -public class StandardItemUpdater extends ItemUpdater { +class StandardItemUpdater extends ItemUpdater { @Override void updateSellIn(Item item) { @@ -8,12 +8,12 @@ public class StandardItemUpdater extends ItemUpdater { } @Override - boolean canUpdateQuality(Item item) { + boolean canUpdateQuality(final Item item) { return item.quality <= HIGHEST_QUALITY && item.quality > MIN_QUALITY; } @Override - int getUpdateValue(Item item) { + int getUpdateValue(final Item item) { if (item.sellIn < 0) { return DEGRADE_NORMAL * 2; } else { @@ -22,7 +22,7 @@ public class StandardItemUpdater extends ItemUpdater { } @Override - int getNewQuality(Item item) { + int getNewQuality(final Item item) { return Math.min(item.quality + getUpdateValue(item), HIGHEST_QUALITY); } } diff --git a/Java/src/main/java/com/gildedrose/SulfurasUpdater.java b/Java/src/main/java/com/gildedrose/SulfurasUpdater.java index aec089ab..5cc14933 100644 --- a/Java/src/main/java/com/gildedrose/SulfurasUpdater.java +++ b/Java/src/main/java/com/gildedrose/SulfurasUpdater.java @@ -1,19 +1,19 @@ package com.gildedrose; -public class SulfurasUpdater extends LegendaryItemUpdater { +class SulfurasUpdater extends LegendaryItemUpdater { @Override void updateSellIn(Item item) { System.out.print("########Never gets old ############"); } @Override - boolean canUpdateQuality(Item item) { + boolean canUpdateQuality(final Item item) { // "Sulfuras", being a legendary item, never decreases in Quality return item.quality < HIGHEST_QUALITY; } @Override - int getUpdateValue(Item item) { + int getUpdateValue(final Item item) { // "Sulfuras", being a legendary item, never decreases in Quality. Its value is always 80 return HIGHEST_QUALITY - item.quality; }