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); +}