🔨 convert NormalItem from anemic to rich

This commit is contained in:
Velizar Todorov 2021-11-30 17:40:59 +01:00
parent 4ccea7cf66
commit 83c26fa828
3 changed files with 25 additions and 43 deletions

View File

@ -1,35 +0,0 @@
package com.gildedrose.item_helpers;
import com.gildedrose.main.Item;
import static java.lang.Math.max;
public class ItemHandler {
private final Item item;
public ItemHandler(Item item) {
this.item = item;
}
public void decrementSellInDate() {
item.sellIn--;
}
public boolean beforeSellInDate() {
return item.sellIn >= 0;
}
public void decrementQuality() {
item.quality = max(item.quality - 1, 0);
}
public void decrementQualityBy2() {
item.quality = max(item.quality - 2, 0);
}
public void decrementQualityBy4() {
item.quality = max(item.quality - 4, 0);
}
}

View File

@ -27,7 +27,7 @@ public class LegendaryItem implements ItemType {
public void decrementSellInDate() {
item.sellIn--;
}
public static boolean isLegendary(Item item) {
return item.name.equals(LEGENDARY);
}

View File

@ -1,28 +1,45 @@
package com.gildedrose.items;
import com.gildedrose.item_helpers.ItemHandler;
import com.gildedrose.item_helpers.ItemType;
import com.gildedrose.main.Item;
import static java.lang.Math.max;
public class NormalItem implements ItemType {
public static final String NORMAL = "Normal";
private final ItemHandler item;
private final Item item;
public NormalItem(Item item) {
this.item = new ItemHandler(item);
this.item = item;
}
@Override
public void updateQuality() {
item.decrementSellInDate();
if (item.beforeSellInDate()) {
item.decrementQuality();
decrementSellInDate();
if (beforeSellInDate()) {
decrementQuality();
} else {
item.decrementQualityBy2();
decrementQualityBy2();
}
}
public void decrementSellInDate() {
item.sellIn--;
}
public boolean beforeSellInDate() {
return item.sellIn >= 0;
}
public void decrementQuality() {
item.quality = max(item.quality - 1, 0);
}
public void decrementQualityBy2() {
item.quality = max(item.quality - 2, 0);
}
@Override
public String getName() {
return NORMAL;