refactor code

This commit is contained in:
matiasalessandrini 2023-07-06 23:22:58 -03:00
parent 9071e804c0
commit f33ca00192
5 changed files with 25 additions and 42 deletions

View File

@ -6,14 +6,10 @@ public class AgedBrieItemHandler implements ItemHandler {
@Override
public void updateItem(Item item) {
if (item.quality < 50) {
incrementQuality(item);
}
incrementQuality(item,item.quality < 50);
decrementSellIn(item);
if (hasExpired(item) && item.quality < 50) {
incrementQuality(item);
}
incrementQuality(item,item.sellIn < 0 && item.quality < 50);
}
}

View File

@ -5,18 +5,15 @@ import com.gildedrose.Item;
public class BackstagePassesItemHandler implements ItemHandler{
@Override
public void updateItem(Item item) {
if (item.quality < 50) {
incrementQuality(item);
if (item.sellIn < 11 && item.quality < 50) {
incrementQuality(item);
}
if (item.sellIn < 6 && item.quality < 50) {
incrementQuality(item);
}
}
incrementQuality(item, item.quality < 50);
incrementQuality(item, item.sellIn < 11 && item.quality < 50);
incrementQuality(item, item.sellIn < 6 && item.quality < 50);
decrementSellIn(item);
initQuality(item, item.sellIn < 0);
}
if (hasExpired(item)) {
private void initQuality(Item item, boolean condition) {
if (condition) {
item.quality = 0;
}
}

View File

@ -2,19 +2,14 @@ package com.gildedrose.business;
import com.gildedrose.Item;
import java.util.stream.IntStream;
public class ConjuredItemHandler implements ItemHandler {
@Override
public void updateItem(Item item) {
if (item.quality > 0) {
decrementQuality(item);
decrementQuality(item);
}
IntStream.range(0, 2).forEach(i -> decrementQuality(item,item.quality > 0));
decrementSellIn(item);
if (hasExpired(item) && item.quality > 0) {
decrementQuality(item);
decrementQuality(item);
}
IntStream.range(0, 2).forEach(i -> decrementQuality(item,item.sellIn < 0 && item.quality > 0));
}
}

View File

@ -6,19 +6,19 @@ public interface ItemHandler {
void updateItem(Item item);
default void incrementQuality(Item item){
item.quality++;
default void incrementQuality(Item item, boolean condition){
if (condition) {
item.quality++;
}
}
default void decrementQuality(Item item){
item.quality--;
default void decrementQuality(Item item, boolean condition){
if (condition) {
item.quality--;
}
}
default void decrementSellIn(Item item){
item.sellIn--;
}
default boolean hasExpired(Item item) {
return item.sellIn < 0;
}
}

View File

@ -7,19 +7,14 @@ import java.util.List;
public class RegularItemHandler implements ItemHandler {
private static final List<String> LEGENDARY_ITEMS = Arrays.asList(new String[]{ItemEnum.SULFURAS.getValue()});
private static final List<String> LEGENDARY_ITEMS = Arrays.asList(ItemEnum.SULFURAS.getValue());
@Override
public void updateItem(Item item) {
if (!LEGENDARY_ITEMS.contains(item.name)) {
if (item.quality > 0) {
decrementQuality(item);
}
decrementQuality(item, item.quality > 0);
decrementSellIn(item);
if (hasExpired(item) && item.quality > 0) {
decrementQuality(item);
}
decrementQuality(item,item.sellIn < 0 && item.quality > 0);
}
}
}