GildedRose-Refactoring-Kata/python/item_wrappers.py
2025-07-09 03:12:59 +02:00

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)