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