mirror of
https://github.com/emilybache/GildedRose-Refactoring-Kata.git
synced 2026-02-17 15:31:27 +00:00
Add AbstractItemUpdateStrategy and refactor ItemUpdateStrategy subclasses
This commit is contained in:
parent
8b57050790
commit
322a99982b
@ -0,0 +1,18 @@
|
|||||||
|
package com.gildedrose.strategy;
|
||||||
|
|
||||||
|
import com.gildedrose.Item;
|
||||||
|
|
||||||
|
public abstract class AbstractItemUpdateStrategy implements ItemUpdateStrategy {
|
||||||
|
protected static final int MAX_QUALITY = 50;
|
||||||
|
protected static final int MIN_QUALITY = 0;
|
||||||
|
|
||||||
|
protected void incrementQualityIfLessThanMax(Item item) {
|
||||||
|
if (item.quality < MAX_QUALITY) {
|
||||||
|
item.quality += 1;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
protected void decrementSellIn(Item item) {
|
||||||
|
item.sellIn -= 1;
|
||||||
|
}
|
||||||
|
}
|
||||||
@ -2,19 +2,14 @@ package com.gildedrose.strategy;
|
|||||||
|
|
||||||
import com.gildedrose.Item;
|
import com.gildedrose.Item;
|
||||||
|
|
||||||
public class AgedBrieUpdateStrategy implements ItemUpdateStrategy {
|
public class AgedBrieUpdateStrategy extends AbstractItemUpdateStrategy {
|
||||||
@Override
|
@Override
|
||||||
public void update(Item item) {
|
public void update(Item item) {
|
||||||
if (item.quality < 50) {
|
incrementQualityIfLessThanMax(item);
|
||||||
item.quality += 1;
|
decrementSellIn(item);
|
||||||
}
|
|
||||||
|
|
||||||
item.sellIn -= 1;
|
|
||||||
|
|
||||||
if (item.sellIn < 0) {
|
if (item.sellIn < 0) {
|
||||||
if (item.quality < 50) {
|
incrementQualityIfLessThanMax(item);
|
||||||
item.quality += 1;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -2,29 +2,23 @@ package com.gildedrose.strategy;
|
|||||||
|
|
||||||
import com.gildedrose.Item;
|
import com.gildedrose.Item;
|
||||||
|
|
||||||
public class BackstagePassesUpdateStrategy implements ItemUpdateStrategy {
|
public class BackstagePassesUpdateStrategy extends AbstractItemUpdateStrategy {
|
||||||
@Override
|
@Override
|
||||||
public void update(Item item) {
|
public void update(Item item) {
|
||||||
if (item.quality < 50) {
|
incrementQualityIfLessThanMax(item);
|
||||||
item.quality += 1;
|
|
||||||
|
|
||||||
if (item.sellIn < 11) {
|
if (item.sellIn < 11) {
|
||||||
if (item.quality < 50) {
|
incrementQualityIfLessThanMax(item);
|
||||||
item.quality += 1;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
if (item.sellIn < 6) {
|
|
||||||
if (item.quality < 50) {
|
|
||||||
item.quality += 1;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
item.sellIn -= 1;
|
if (item.sellIn < 6) {
|
||||||
|
incrementQualityIfLessThanMax(item);
|
||||||
|
}
|
||||||
|
|
||||||
|
decrementSellIn(item);
|
||||||
|
|
||||||
if (item.sellIn < 0) {
|
if (item.sellIn < 0) {
|
||||||
item.quality = 0;
|
item.quality = MIN_QUALITY;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -2,14 +2,14 @@ package com.gildedrose.strategy;
|
|||||||
|
|
||||||
import com.gildedrose.Item;
|
import com.gildedrose.Item;
|
||||||
|
|
||||||
public class StandardItemUpdateStrategy implements ItemUpdateStrategy {
|
public class StandardItemUpdateStrategy extends AbstractItemUpdateStrategy {
|
||||||
@Override
|
@Override
|
||||||
public void update(Item item) {
|
public void update(Item item) {
|
||||||
item.sellIn -= 1;
|
decrementSellIn(item);
|
||||||
if (item.quality > 0) {
|
if (item.quality > MIN_QUALITY) {
|
||||||
item.quality -= 1;
|
item.quality -= 1;
|
||||||
}
|
}
|
||||||
if (item.sellIn < 0 && item.quality > 0) {
|
if (item.sellIn < 0 && item.quality > MIN_QUALITY) {
|
||||||
item.quality -= 1;
|
item.quality -= 1;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -2,7 +2,7 @@ package com.gildedrose.strategy;
|
|||||||
|
|
||||||
import com.gildedrose.Item;
|
import com.gildedrose.Item;
|
||||||
|
|
||||||
public class SulfurasUpdateStrategy implements ItemUpdateStrategy {
|
public class SulfurasUpdateStrategy extends AbstractItemUpdateStrategy {
|
||||||
@Override
|
@Override
|
||||||
public void update(Item item) {
|
public void update(Item item) {
|
||||||
// "Sulfuras, Hand of Ragnaros"는 판매일과 품질이 변하지 않음
|
// "Sulfuras, Hand of Ragnaros"는 판매일과 품질이 변하지 않음
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user