mirror of
https://github.com/emilybache/GildedRose-Refactoring-Kata.git
synced 2026-02-28 04:41:14 +00:00
Use interface over abstract class
This commit is contained in:
parent
0dca9b86e1
commit
3724286701
@ -1,6 +1,6 @@
|
||||
package com.gildedrose;
|
||||
|
||||
public class AgedBrieItemHandler extends ItemHandler {
|
||||
public class AgedBrieItemHandler implements ItemHandler {
|
||||
|
||||
public AgedBrieItemHandler() {}
|
||||
|
||||
|
||||
@ -1,6 +1,6 @@
|
||||
package com.gildedrose;
|
||||
|
||||
public class BackstagePassesItemHandler extends ItemHandler {
|
||||
public class BackstagePassesItemHandler implements ItemHandler {
|
||||
|
||||
@Override
|
||||
public void handleDay(Item item) {
|
||||
|
||||
@ -1,6 +1,7 @@
|
||||
package com.gildedrose;
|
||||
|
||||
public class ConjuredItemHandler extends ItemHandler {
|
||||
public class ConjuredItemHandler implements ItemHandler {
|
||||
|
||||
@Override
|
||||
public void handleDay(Item item) {
|
||||
item.quality -= 2;
|
||||
|
||||
@ -1,6 +1,6 @@
|
||||
package com.gildedrose;
|
||||
|
||||
public class GenericItemHandler extends ItemHandler {
|
||||
public class GenericItemHandler implements ItemHandler {
|
||||
|
||||
@Override
|
||||
public void handleDay(Item item) {
|
||||
|
||||
@ -1,7 +1,5 @@
|
||||
package com.gildedrose;
|
||||
|
||||
public abstract class ItemHandler {
|
||||
|
||||
public void handleDay(Item item) {
|
||||
}
|
||||
public interface ItemHandler {
|
||||
void handleDay(Item item);
|
||||
}
|
||||
|
||||
@ -4,7 +4,6 @@ import java.lang.reflect.InvocationTargetException;
|
||||
import java.util.Map;
|
||||
|
||||
public class ItemHandlerFactory {
|
||||
|
||||
private static final Map<ItemType, Class<? extends ItemHandler>> ITEM_HANDLER_MAP = Map.of(
|
||||
ItemType.AGED_BRIE,
|
||||
AgedBrieItemHandler.class,
|
||||
|
||||
@ -18,7 +18,9 @@ public enum ItemType {
|
||||
public static ItemType forDisplayName(String displayName) {
|
||||
return Arrays
|
||||
.stream(ItemType.values())
|
||||
.filter(itemType -> itemType.getDisplayName().equals(displayName)).findFirst().orElse(GENERIC);
|
||||
.filter(itemType -> itemType.getDisplayName().equals(displayName))
|
||||
.findFirst()
|
||||
.orElse(GENERIC);
|
||||
}
|
||||
|
||||
public String getDisplayName() {
|
||||
|
||||
@ -1,3 +1,7 @@
|
||||
package com.gildedrose;
|
||||
|
||||
public class SulfurasItemHandler extends ItemHandler {}
|
||||
public class SulfurasItemHandler implements ItemHandler {
|
||||
|
||||
@Override
|
||||
public void handleDay(Item item) {}
|
||||
}
|
||||
|
||||
@ -1,15 +1,17 @@
|
||||
package com.gildedrose;
|
||||
|
||||
import org.junit.jupiter.api.Test;
|
||||
|
||||
import static org.junit.jupiter.api.Assertions.assertEquals;
|
||||
|
||||
import org.junit.jupiter.api.Test;
|
||||
|
||||
class GildedRoseTest {
|
||||
private static final int SULFURAS_QUALITY = 80;
|
||||
|
||||
@Test
|
||||
public void agedBrieIncreasesInQualityByOneEachDay() {
|
||||
Item[] items = new Item[]{new Item(ItemType.AGED_BRIE.getDisplayName(), 2, 0)};
|
||||
Item[] items = new Item[] {
|
||||
new Item(ItemType.AGED_BRIE.getDisplayName(), 2, 0)
|
||||
};
|
||||
GildedRose app = new GildedRose(items);
|
||||
app.updateQuality();
|
||||
assertEquals(1, app.items.get(0).quality);
|
||||
@ -109,7 +111,9 @@ class GildedRoseTest {
|
||||
|
||||
@Test
|
||||
public void qualityIsNeverOverFiftyForAgedBrie() {
|
||||
Item[] items = new Item[]{new Item(ItemType.AGED_BRIE.getDisplayName(), 5, 50)};
|
||||
Item[] items = new Item[] {
|
||||
new Item(ItemType.AGED_BRIE.getDisplayName(), 5, 50)
|
||||
};
|
||||
GildedRose app = new GildedRose(items);
|
||||
app.updateQuality();
|
||||
assertEquals(50, app.items.get(0).quality);
|
||||
@ -121,7 +125,9 @@ class GildedRoseTest {
|
||||
|
||||
@Test
|
||||
public void qualityIsNeverOverFiftyForBackstagePasses() {
|
||||
Item[] items = new Item[]{new Item(ItemType.BACKSTAGE_PASSES.getDisplayName(), 5, 50)};
|
||||
Item[] items = new Item[] {
|
||||
new Item(ItemType.BACKSTAGE_PASSES.getDisplayName(), 5, 50)
|
||||
};
|
||||
GildedRose app = new GildedRose(items);
|
||||
app.updateQuality();
|
||||
assertEquals(50, app.items.get(0).quality);
|
||||
@ -157,7 +163,9 @@ class GildedRoseTest {
|
||||
|
||||
@Test
|
||||
public void sellInDateDecreasesByOneEachDayForAgedBrie() {
|
||||
Item[] items = new Item[]{new Item(ItemType.AGED_BRIE.getDisplayName(), 5, 1)};
|
||||
Item[] items = new Item[] {
|
||||
new Item(ItemType.AGED_BRIE.getDisplayName(), 5, 1)
|
||||
};
|
||||
GildedRose app = new GildedRose(items);
|
||||
app.updateQuality();
|
||||
assertEquals(4, app.items.get(0).sellIn);
|
||||
@ -169,7 +177,9 @@ class GildedRoseTest {
|
||||
|
||||
@Test
|
||||
public void sellInDateDecreasesByOneEachDayForBackstagePasses() {
|
||||
Item[] items = new Item[]{new Item(ItemType.BACKSTAGE_PASSES.getDisplayName(), 5, 1)};
|
||||
Item[] items = new Item[] {
|
||||
new Item(ItemType.BACKSTAGE_PASSES.getDisplayName(), 5, 1)
|
||||
};
|
||||
GildedRose app = new GildedRose(items);
|
||||
app.updateQuality();
|
||||
assertEquals(4, app.items.get(0).sellIn);
|
||||
@ -205,7 +215,9 @@ class GildedRoseTest {
|
||||
|
||||
@Test
|
||||
public void sellInDateCanBeNegativeForAgedBrie() {
|
||||
Item[] items = new Item[]{new Item(ItemType.AGED_BRIE.getDisplayName(), 1, 1)};
|
||||
Item[] items = new Item[] {
|
||||
new Item(ItemType.AGED_BRIE.getDisplayName(), 1, 1)
|
||||
};
|
||||
GildedRose app = new GildedRose(items);
|
||||
app.updateQuality();
|
||||
assertEquals(0, app.items.get(0).sellIn);
|
||||
@ -217,7 +229,9 @@ class GildedRoseTest {
|
||||
|
||||
@Test
|
||||
public void sellInDateCanBeNegativeForBackStagePasses() {
|
||||
Item[] items = new Item[]{new Item(ItemType.BACKSTAGE_PASSES.getDisplayName(), 1, 1)};
|
||||
Item[] items = new Item[] {
|
||||
new Item(ItemType.BACKSTAGE_PASSES.getDisplayName(), 1, 1)
|
||||
};
|
||||
GildedRose app = new GildedRose(items);
|
||||
app.updateQuality();
|
||||
assertEquals(0, app.items.get(0).sellIn);
|
||||
|
||||
Loading…
Reference in New Issue
Block a user