abstract class implements methods which are not overridden

This commit is contained in:
Gabba 2018-01-16 10:34:38 +00:00
parent 77e9669f6e
commit cda1b03183
7 changed files with 21 additions and 67 deletions

View File

@ -1,10 +1,10 @@
package com.gildedrose.item; package com.gildedrose.item;
public class AgedBrie extends CustomisedItem { class AgedBrie extends CustomisedItem {
private final Item item; private final Item item;
public AgedBrie(Item item) { AgedBrie(Item item) {
this.item = item; this.item = item;
} }
@ -17,14 +17,4 @@ public class AgedBrie extends CustomisedItem {
int updatedItemQuality() { int updatedItemQuality() {
return item.quality += 1; return item.quality += 1;
} }
@Override
protected boolean hasReachedHighestQualityValue() {
return item.quality > QualityValues.highestValuePossible(item);
}
@Override
protected boolean hasReachedLowestQualityValue() {
return item.quality < QualityValues.lowestValuePossible();
}
} }

View File

@ -1,10 +1,10 @@
package com.gildedrose.item; package com.gildedrose.item;
public class BackstagePassesItem extends CustomisedItem { class BackstagePassesItem extends CustomisedItem {
private final Item item; private final Item item;
public BackstagePassesItem(Item item) { BackstagePassesItem(Item item) {
this.item = item; this.item = item;
} }
@ -26,16 +26,6 @@ public class BackstagePassesItem extends CustomisedItem {
} }
} }
@Override
protected boolean hasReachedHighestQualityValue() {
return item.quality > QualityValues.highestValuePossible(item);
}
@Override
protected boolean hasReachedLowestQualityValue() {
return item.quality < QualityValues.lowestValuePossible();
}
private boolean sellByDayValueIsOver(int dayNumber) { private boolean sellByDayValueIsOver(int dayNumber) {
return item.sellIn > dayNumber; return item.sellIn > dayNumber;
} }

View File

@ -1,23 +1,13 @@
package com.gildedrose.item; package com.gildedrose.item;
public class ConjuredItem extends CustomisedItem { class ConjuredItem extends CustomisedItem {
private final Item item; private final Item item;
public ConjuredItem(Item item) { ConjuredItem(Item item) {
this.item = item; this.item = item;
} }
@Override
protected boolean hasReachedHighestQualityValue() {
return item.quality > QualityValues.highestValuePossible(item);
}
@Override
protected boolean hasReachedLowestQualityValue() {
return item.quality < QualityValues.lowestValuePossible();
}
@Override @Override
int updatedItemSellIn() { int updatedItemSellIn() {
return item.sellIn -= 1; return item.sellIn -= 1;

View File

@ -6,9 +6,9 @@ public abstract class CustomisedItem {
item.sellIn = updatedItemSellIn(); item.sellIn = updatedItemSellIn();
item.quality = updatedItemQuality(); item.quality = updatedItemQuality();
if (hasReachedLowestQualityValue()) { if (hasReachedLowestQualityValue(item)) {
item.quality = QualityValues.lowestValuePossible(); item.quality = QualityValues.lowestValuePossible();
} else if (hasReachedHighestQualityValue()) { } else if (hasReachedHighestQualityValue(item)) {
item.quality = QualityValues.highestValuePossible(item); item.quality = QualityValues.highestValuePossible(item);
} }
} }
@ -17,7 +17,11 @@ public abstract class CustomisedItem {
abstract int updatedItemQuality(); abstract int updatedItemQuality();
protected abstract boolean hasReachedHighestQualityValue(); private boolean hasReachedHighestQualityValue(Item item) {
return item.quality > QualityValues.highestValuePossible(item);
}
protected abstract boolean hasReachedLowestQualityValue(); private boolean hasReachedLowestQualityValue(Item item) {
return item.quality < QualityValues.lowestValuePossible();
}
} }

View File

@ -1,12 +1,12 @@
package com.gildedrose.item; package com.gildedrose.item;
public final class QualityValues { final class QualityValues {
public static int lowestValuePossible() { static int lowestValuePossible() {
return 0; return 0;
} }
public static int highestValuePossible(Item item) { static int highestValuePossible(Item item) {
if (item.name.equals(CustomisedItemFactory.SULFURAS)) { if (item.name.equals(CustomisedItemFactory.SULFURAS)) {
return 80; return 80;
} }

View File

@ -1,10 +1,10 @@
package com.gildedrose.item; package com.gildedrose.item;
public class StandardItem extends CustomisedItem { class StandardItem extends CustomisedItem {
private final Item item; private final Item item;
public StandardItem(Item item) { StandardItem(Item item) {
this.item = item; this.item = item;
} }
@ -22,16 +22,6 @@ public class StandardItem extends CustomisedItem {
} }
} }
@Override
protected boolean hasReachedHighestQualityValue() {
return item.quality > QualityValues.highestValuePossible(item);
}
@Override
protected boolean hasReachedLowestQualityValue() {
return item.quality < QualityValues.lowestValuePossible();
}
private boolean sellByDayValueIsOverZero() { private boolean sellByDayValueIsOverZero() {
return item.sellIn > 0; return item.sellIn > 0;
} }

View File

@ -1,10 +1,10 @@
package com.gildedrose.item; package com.gildedrose.item;
public class Sulfuras extends CustomisedItem { class Sulfuras extends CustomisedItem {
private final Item item; private final Item item;
public Sulfuras(Item item) { Sulfuras(Item item) {
this.item = item; this.item = item;
} }
@ -17,14 +17,4 @@ public class Sulfuras extends CustomisedItem {
int updatedItemQuality() { int updatedItemQuality() {
return item.quality; return item.quality;
} }
@Override
protected boolean hasReachedHighestQualityValue() {
return item.quality > QualityValues.highestValuePossible(item) ;
}
@Override
protected boolean hasReachedLowestQualityValue() {
return item.quality < QualityValues.lowestValuePossible();
}
} }