From 322a99982be0ffeca265ee4fcb458a1b2781303b Mon Sep 17 00:00:00 2001 From: doxxx Date: Tue, 10 Oct 2023 17:10:14 +0900 Subject: [PATCH] Add AbstractItemUpdateStrategy and refactor ItemUpdateStrategy subclasses --- .../strategy/AbstractItemUpdateStrategy.java | 18 +++++++++++++ .../strategy/AgedBrieUpdateStrategy.java | 13 +++------- .../BackstagePassesUpdateStrategy.java | 26 +++++++------------ .../strategy/StandardItemUpdateStrategy.java | 8 +++--- .../strategy/SulfurasUpdateStrategy.java | 2 +- 5 files changed, 37 insertions(+), 30 deletions(-) create mode 100644 Java/src/main/java/com/gildedrose/strategy/AbstractItemUpdateStrategy.java diff --git a/Java/src/main/java/com/gildedrose/strategy/AbstractItemUpdateStrategy.java b/Java/src/main/java/com/gildedrose/strategy/AbstractItemUpdateStrategy.java new file mode 100644 index 00000000..c806d1df --- /dev/null +++ b/Java/src/main/java/com/gildedrose/strategy/AbstractItemUpdateStrategy.java @@ -0,0 +1,18 @@ +package com.gildedrose.strategy; + +import com.gildedrose.Item; + +public abstract class AbstractItemUpdateStrategy implements ItemUpdateStrategy { + protected static final int MAX_QUALITY = 50; + protected static final int MIN_QUALITY = 0; + + protected void incrementQualityIfLessThanMax(Item item) { + if (item.quality < MAX_QUALITY) { + item.quality += 1; + } + } + + protected void decrementSellIn(Item item) { + item.sellIn -= 1; + } +} diff --git a/Java/src/main/java/com/gildedrose/strategy/AgedBrieUpdateStrategy.java b/Java/src/main/java/com/gildedrose/strategy/AgedBrieUpdateStrategy.java index 06842418..099b4093 100644 --- a/Java/src/main/java/com/gildedrose/strategy/AgedBrieUpdateStrategy.java +++ b/Java/src/main/java/com/gildedrose/strategy/AgedBrieUpdateStrategy.java @@ -2,19 +2,14 @@ package com.gildedrose.strategy; import com.gildedrose.Item; -public class AgedBrieUpdateStrategy implements ItemUpdateStrategy { +public class AgedBrieUpdateStrategy extends AbstractItemUpdateStrategy { @Override public void update(Item item) { - if (item.quality < 50) { - item.quality += 1; - } - - item.sellIn -= 1; + incrementQualityIfLessThanMax(item); + decrementSellIn(item); if (item.sellIn < 0) { - if (item.quality < 50) { - item.quality += 1; - } + incrementQualityIfLessThanMax(item); } } } diff --git a/Java/src/main/java/com/gildedrose/strategy/BackstagePassesUpdateStrategy.java b/Java/src/main/java/com/gildedrose/strategy/BackstagePassesUpdateStrategy.java index 757dae33..d634ca2d 100644 --- a/Java/src/main/java/com/gildedrose/strategy/BackstagePassesUpdateStrategy.java +++ b/Java/src/main/java/com/gildedrose/strategy/BackstagePassesUpdateStrategy.java @@ -2,29 +2,23 @@ package com.gildedrose.strategy; import com.gildedrose.Item; -public class BackstagePassesUpdateStrategy implements ItemUpdateStrategy { +public class BackstagePassesUpdateStrategy extends AbstractItemUpdateStrategy { @Override public void update(Item item) { - if (item.quality < 50) { - item.quality += 1; + incrementQualityIfLessThanMax(item); - if (item.sellIn < 11) { - if (item.quality < 50) { - item.quality += 1; - } - } - - if (item.sellIn < 6) { - if (item.quality < 50) { - item.quality += 1; - } - } + if (item.sellIn < 11) { + incrementQualityIfLessThanMax(item); } - item.sellIn -= 1; + if (item.sellIn < 6) { + incrementQualityIfLessThanMax(item); + } + + decrementSellIn(item); if (item.sellIn < 0) { - item.quality = 0; + item.quality = MIN_QUALITY; } } } diff --git a/Java/src/main/java/com/gildedrose/strategy/StandardItemUpdateStrategy.java b/Java/src/main/java/com/gildedrose/strategy/StandardItemUpdateStrategy.java index 611923d6..51f93947 100644 --- a/Java/src/main/java/com/gildedrose/strategy/StandardItemUpdateStrategy.java +++ b/Java/src/main/java/com/gildedrose/strategy/StandardItemUpdateStrategy.java @@ -2,14 +2,14 @@ package com.gildedrose.strategy; import com.gildedrose.Item; -public class StandardItemUpdateStrategy implements ItemUpdateStrategy { +public class StandardItemUpdateStrategy extends AbstractItemUpdateStrategy { @Override public void update(Item item) { - item.sellIn -= 1; - if (item.quality > 0) { + decrementSellIn(item); + if (item.quality > MIN_QUALITY) { item.quality -= 1; } - if (item.sellIn < 0 && item.quality > 0) { + if (item.sellIn < 0 && item.quality > MIN_QUALITY) { item.quality -= 1; } } diff --git a/Java/src/main/java/com/gildedrose/strategy/SulfurasUpdateStrategy.java b/Java/src/main/java/com/gildedrose/strategy/SulfurasUpdateStrategy.java index 9ea84889..c2caafb8 100644 --- a/Java/src/main/java/com/gildedrose/strategy/SulfurasUpdateStrategy.java +++ b/Java/src/main/java/com/gildedrose/strategy/SulfurasUpdateStrategy.java @@ -2,7 +2,7 @@ package com.gildedrose.strategy; import com.gildedrose.Item; -public class SulfurasUpdateStrategy implements ItemUpdateStrategy { +public class SulfurasUpdateStrategy extends AbstractItemUpdateStrategy { @Override public void update(Item item) { // "Sulfuras, Hand of Ragnaros"는 판매일과 품질이 변하지 않음