Refactor GiledRose to use GildedItem hierarchy

This commit is contained in:
Yossri Ghabri 2025-11-25 15:49:57 +01:00
parent 35381e1864
commit 27b90d1d41

View File

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