mirror of
https://github.com/emilybache/GildedRose-Refactoring-Kata.git
synced 2026-02-04 17:21:38 +00:00
44 lines
1.2 KiB
Python
44 lines
1.2 KiB
Python
from models import Item
|
|
|
|
class ItemWrapper:
|
|
"""
|
|
Classe abstraite représentant un item enrichi d'une logique métier propre.
|
|
"""
|
|
def __init__(self, item: Item):
|
|
self.item = item
|
|
|
|
def update(self):
|
|
raise NotImplementedError("Subclasses must implement update().")
|
|
|
|
|
|
class NormalItem(ItemWrapper):
|
|
def update(self):
|
|
self.decrease_quality()
|
|
self.item.sell_in -= 1
|
|
if self.item.sell_in < 0:
|
|
self.decrease_quality()
|
|
|
|
def decrease_quality(self):
|
|
if self.item.quality > 0:
|
|
self.item.quality -= 1
|
|
|
|
|
|
def item_factory(item: Item) -> ItemWrapper:
|
|
"""
|
|
Retourne un wrapper métier adapté à l'item donné.
|
|
"""
|
|
if item.name == "Aged Brie":
|
|
from aged_brie import AgedBrieItem
|
|
return AgedBrieItem(item)
|
|
elif item.name == "Sulfuras, Hand of Ragnaros":
|
|
from sulfuras import SulfurasItem
|
|
return SulfurasItem(item)
|
|
elif item.name == "Backstage passes to a TAFKAL80ETC concert":
|
|
from backstage import BackstagePassItem
|
|
return BackstagePassItem(item)
|
|
elif "Conjured" in item.name:
|
|
from conjured import ConjuredItem
|
|
return ConjuredItem(item)
|
|
else:
|
|
return NormalItem(item)
|