From 11c697d7c55d8cd64c7d4f79a3ca39716b4ddccf Mon Sep 17 00:00:00 2001 From: Bjorn Misseghers Date: Tue, 13 Apr 2021 08:50:16 +0200 Subject: [PATCH] Separate qyality behavior in separate class Same reason as for the sellIn behavior. We want to be able to provide separate implementations and test them separately --- .../quality/DefaultQualityBehavior.java | 22 +++++++++++++++++++ .../behavior/quality/QualityBehavior.java | 8 +++++++ 2 files changed, 30 insertions(+) create mode 100644 Java/src/main/java/com/gildedrose/behavior/quality/DefaultQualityBehavior.java create mode 100644 Java/src/main/java/com/gildedrose/behavior/quality/QualityBehavior.java diff --git a/Java/src/main/java/com/gildedrose/behavior/quality/DefaultQualityBehavior.java b/Java/src/main/java/com/gildedrose/behavior/quality/DefaultQualityBehavior.java new file mode 100644 index 00000000..ffa72474 --- /dev/null +++ b/Java/src/main/java/com/gildedrose/behavior/quality/DefaultQualityBehavior.java @@ -0,0 +1,22 @@ +package com.gildedrose.behavior.quality; + +import com.gildedrose.Item; + +public class DefaultQualityBehavior implements QualityBehavior { + + public static final int MAX_QUALITY_LEVEL = 50; + public static final int MIN_QUALITY_LEVEL = 0; + + @Override + public void processQualityUpdate(Item item) { + decreaseQuality(item); + } + + private void decreaseQuality(Item item) { + item.quality = limitQuality(item.quality - 1); + } + + private int limitQuality(int newQuality) { + return Math.max(MIN_QUALITY_LEVEL, Math.min(MAX_QUALITY_LEVEL, newQuality)); + } +} diff --git a/Java/src/main/java/com/gildedrose/behavior/quality/QualityBehavior.java b/Java/src/main/java/com/gildedrose/behavior/quality/QualityBehavior.java new file mode 100644 index 00000000..60b8bc97 --- /dev/null +++ b/Java/src/main/java/com/gildedrose/behavior/quality/QualityBehavior.java @@ -0,0 +1,8 @@ +package com.gildedrose.behavior.quality; + +import com.gildedrose.Item; + +public interface QualityBehavior { + + void processQualityUpdate(Item item); +}