mirror of
https://github.com/emilybache/GildedRose-Refactoring-Kata.git
synced 2026-02-15 22:41:30 +00:00
🔨 convert BackstagePassItem from anemic to rich
This commit is contained in:
parent
79587f0ed0
commit
44f4e88689
@ -3,62 +3,33 @@ package com.gildedrose.item_helpers;
|
||||
import com.gildedrose.main.Item;
|
||||
|
||||
import static java.lang.Math.max;
|
||||
import static java.lang.Math.min;
|
||||
|
||||
public class ItemHandler {
|
||||
|
||||
private final Item item;
|
||||
private final Item item;
|
||||
|
||||
public ItemHandler(Item item) {
|
||||
this.item = item;
|
||||
}
|
||||
public ItemHandler(Item item) {
|
||||
this.item = item;
|
||||
}
|
||||
|
||||
public void decrementSellInDate() {
|
||||
item.sellIn--;
|
||||
}
|
||||
public void decrementSellInDate() {
|
||||
item.sellIn--;
|
||||
}
|
||||
|
||||
public boolean beforeSellInDate() {
|
||||
return item.sellIn >= 0;
|
||||
}
|
||||
public boolean beforeSellInDate() {
|
||||
return item.sellIn >= 0;
|
||||
}
|
||||
|
||||
public void decrementQuality() {
|
||||
item.quality = max(item.quality - 1, 0);
|
||||
}
|
||||
|
||||
public boolean lessThan5DaysToSellIn() {
|
||||
return item.sellIn >= 0 && item.sellIn <= 5;
|
||||
}
|
||||
public void decrementQualityBy2() {
|
||||
item.quality = max(item.quality - 2, 0);
|
||||
}
|
||||
|
||||
public boolean lessThan10DaysToSellIn() {
|
||||
return item.sellIn >= 5 && item.sellIn <= 10;
|
||||
}
|
||||
|
||||
public boolean moreThan10DaysToSellIn() {
|
||||
return item.sellIn >= 10;
|
||||
}
|
||||
|
||||
public void makeQualityZero() {
|
||||
item.quality = 0;
|
||||
}
|
||||
|
||||
public void incrementQuality() {
|
||||
item.quality = min(item.quality + 1, 50);
|
||||
}
|
||||
|
||||
public void incrementQualityBy2() {
|
||||
item.quality = min(item.quality + 2, 50);
|
||||
}
|
||||
|
||||
public void incrementQualityBy3() {
|
||||
item.quality = min(item.quality + 3, 50);
|
||||
}
|
||||
|
||||
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);
|
||||
}
|
||||
public void decrementQualityBy4() {
|
||||
item.quality = max(item.quality - 4, 0);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@ -1,32 +1,66 @@
|
||||
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.min;
|
||||
|
||||
public class BackstagePassItem implements ItemType {
|
||||
|
||||
public static final String BACKSTAGE_PASS = "Backstage passes to a TAFKAL80ETC concert";
|
||||
private final ItemHandler item;
|
||||
|
||||
private final Item item;
|
||||
|
||||
public BackstagePassItem(Item item) {
|
||||
this.item = new ItemHandler(item);
|
||||
this.item = item;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void updateQuality() {
|
||||
item.decrementSellInDate();
|
||||
if (item.moreThan10DaysToSellIn()) {
|
||||
item.incrementQuality();
|
||||
} else if (item.lessThan10DaysToSellIn()) {
|
||||
item.incrementQualityBy2();
|
||||
} else if (item.lessThan5DaysToSellIn()) {
|
||||
item.incrementQualityBy3();
|
||||
decrementSellInDate();
|
||||
if (moreThan10DaysToSellIn()) {
|
||||
incrementQuality();
|
||||
} else if (lessThan10DaysToSellIn()) {
|
||||
incrementQualityBy2();
|
||||
} else if (lessThan5DaysToSellIn()) {
|
||||
incrementQualityBy3();
|
||||
} else {
|
||||
item.makeQualityZero();
|
||||
makeQualityZero();
|
||||
}
|
||||
}
|
||||
|
||||
public void decrementSellInDate() {
|
||||
item.sellIn--;
|
||||
}
|
||||
|
||||
public boolean lessThan5DaysToSellIn() {
|
||||
return item.sellIn >= 0 && item.sellIn <= 5;
|
||||
}
|
||||
|
||||
public boolean lessThan10DaysToSellIn() {
|
||||
return item.sellIn >= 5 && item.sellIn <= 10;
|
||||
}
|
||||
|
||||
public boolean moreThan10DaysToSellIn() {
|
||||
return item.sellIn >= 10;
|
||||
}
|
||||
|
||||
public void makeQualityZero() {
|
||||
item.quality = 0;
|
||||
}
|
||||
|
||||
public void incrementQuality() {
|
||||
item.quality = min(item.quality + 1, 50);
|
||||
}
|
||||
|
||||
public void incrementQualityBy2() {
|
||||
item.quality = min(item.quality + 2, 50);
|
||||
}
|
||||
|
||||
public void incrementQualityBy3() {
|
||||
item.quality = min(item.quality + 3, 50);
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getName() {
|
||||
return BACKSTAGE_PASS;
|
||||
|
||||
Loading…
Reference in New Issue
Block a user