mirror of
https://github.com/emilybache/GildedRose-Refactoring-Kata.git
synced 2026-02-16 06:51: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;
|
||||
|
||||
public class AgedBrieUpdateStrategy implements ItemUpdateStrategy {
|
||||
public class AgedBrieUpdateStrategy extends AbstractItemUpdateStrategy {
|
||||
@Override
|
||||
public void update(Item item) {
|
||||
if (item.quality < 50) {
|
||||
item.quality += 1;
|
||||
}
|
||||
|
||||
item.sellIn -= 1;
|
||||
incrementQualityIfLessThanMax(item);
|
||||
decrementSellIn(item);
|
||||
|
||||
if (item.sellIn < 0) {
|
||||
if (item.quality < 50) {
|
||||
item.quality += 1;
|
||||
}
|
||||
incrementQualityIfLessThanMax(item);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@ -2,29 +2,23 @@ package com.gildedrose.strategy;
|
||||
|
||||
import com.gildedrose.Item;
|
||||
|
||||
public class BackstagePassesUpdateStrategy implements ItemUpdateStrategy {
|
||||
public class BackstagePassesUpdateStrategy extends AbstractItemUpdateStrategy {
|
||||
@Override
|
||||
public void update(Item item) {
|
||||
if (item.quality < 50) {
|
||||
item.quality += 1;
|
||||
incrementQualityIfLessThanMax(item);
|
||||
|
||||
if (item.sellIn < 11) {
|
||||
if (item.quality < 50) {
|
||||
item.quality += 1;
|
||||
}
|
||||
}
|
||||
|
||||
if (item.sellIn < 6) {
|
||||
if (item.quality < 50) {
|
||||
item.quality += 1;
|
||||
}
|
||||
}
|
||||
if (item.sellIn < 11) {
|
||||
incrementQualityIfLessThanMax(item);
|
||||
}
|
||||
|
||||
item.sellIn -= 1;
|
||||
if (item.sellIn < 6) {
|
||||
incrementQualityIfLessThanMax(item);
|
||||
}
|
||||
|
||||
decrementSellIn(item);
|
||||
|
||||
if (item.sellIn < 0) {
|
||||
item.quality = 0;
|
||||
item.quality = MIN_QUALITY;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@ -2,14 +2,14 @@ package com.gildedrose.strategy;
|
||||
|
||||
import com.gildedrose.Item;
|
||||
|
||||
public class StandardItemUpdateStrategy implements ItemUpdateStrategy {
|
||||
public class StandardItemUpdateStrategy extends AbstractItemUpdateStrategy {
|
||||
@Override
|
||||
public void update(Item item) {
|
||||
item.sellIn -= 1;
|
||||
if (item.quality > 0) {
|
||||
decrementSellIn(item);
|
||||
if (item.quality > MIN_QUALITY) {
|
||||
item.quality -= 1;
|
||||
}
|
||||
if (item.sellIn < 0 && item.quality > 0) {
|
||||
if (item.sellIn < 0 && item.quality > MIN_QUALITY) {
|
||||
item.quality -= 1;
|
||||
}
|
||||
}
|
||||
|
||||
@ -2,7 +2,7 @@ package com.gildedrose.strategy;
|
||||
|
||||
import com.gildedrose.Item;
|
||||
|
||||
public class SulfurasUpdateStrategy implements ItemUpdateStrategy {
|
||||
public class SulfurasUpdateStrategy extends AbstractItemUpdateStrategy {
|
||||
@Override
|
||||
public void update(Item item) {
|
||||
// "Sulfuras, Hand of Ragnaros"는 판매일과 품질이 변하지 않음
|
||||
|
||||
Loading…
Reference in New Issue
Block a user