From 27b90d1d41ed9b4565457f6209ab491fe670363b Mon Sep 17 00:00:00 2001 From: Yossri Ghabri Date: Tue, 25 Nov 2025 15:49:57 +0100 Subject: [PATCH] Refactor GiledRose to use GildedItem hierarchy --- .../main/java/com/gildedrose/GildedRose.java | 60 ++++--------------- 1 file changed, 12 insertions(+), 48 deletions(-) diff --git a/Java/src/main/java/com/gildedrose/GildedRose.java b/Java/src/main/java/com/gildedrose/GildedRose.java index 87a3b926..05686660 100644 --- a/Java/src/main/java/com/gildedrose/GildedRose.java +++ b/Java/src/main/java/com/gildedrose/GildedRose.java @@ -1,5 +1,7 @@ package com.gildedrose; +import com.gildedrose.items.*; + class GildedRose { Item[] items; @@ -9,54 +11,16 @@ class GildedRose { public void updateQuality() { for (int i = 0; i < items.length; i++) { - if (!items[i].name.equals("Aged Brie") - && !items[i].name.equals("Backstage passes to a TAFKAL80ETC concert")) { - if (items[i].quality > 0) { - if (!items[i].name.equals("Sulfuras, Hand of Ragnaros")) { - items[i].quality = items[i].quality - 1; - } - } - } else { - if (items[i].quality < 50) { - items[i].quality = items[i].quality + 1; - - if (items[i].name.equals("Backstage passes to a TAFKAL80ETC concert")) { - if (items[i].sellIn < 11) { - if (items[i].quality < 50) { - items[i].quality = items[i].quality + 1; - } - } - - if (items[i].sellIn < 6) { - if (items[i].quality < 50) { - items[i].quality = items[i].quality + 1; - } - } - } - } - } - - if (!items[i].name.equals("Sulfuras, Hand of Ragnaros")) { - items[i].sellIn = items[i].sellIn - 1; - } - - if (items[i].sellIn < 0) { - if (!items[i].name.equals("Aged Brie")) { - if (!items[i].name.equals("Backstage passes to a TAFKAL80ETC concert")) { - if (items[i].quality > 0) { - if (!items[i].name.equals("Sulfuras, Hand of Ragnaros")) { - items[i].quality = items[i].quality - 1; - } - } - } else { - items[i].quality = items[i].quality - items[i].quality; - } - } else { - if (items[i].quality < 50) { - items[i].quality = items[i].quality + 1; - } - } - } + GildedItem gi = toGildedItem(items[i]); + gi.updateQuality(); } } + + private GildedItem toGildedItem(Item item) { + if (ItemUtils.isAgedBrie(item)) return new AgedBrieItem(item); + if (ItemUtils.isBackstage(item)) return new BackstageItem(item); + if (ItemUtils.isSulfuras(item)) return new SulfurasItem(item); + // this conjured item does not work properly yet + return new NormalItem(item); + } }