Rene Da, zajebano je, zato i treba prosuđivanje na to što se zapravo radi.
A ovo za nasljeđivanje je stvarno ovisno o jeziku. Generalno ono što ti postižeš dekoratorom jer “nadograđuješ” neku komponentu da ima neke dodatne obveze. Nitko ti ne kaže da ti onda sučelje mora ostati isto:
class Component:
def get(self, text: str):
raise NotImplementedError
class Text(Component):
def get(self, text: str):
return text
class Sentence:
def __init__(self, component: Component):
self._component = component
def get(self, text: str, delimiter: str = "."):
return self._component.get(text).split(delimiter)
vidiš da u dinamičkom jezikom nit trebaš nasljeđivati komponentu, nit imati isto sučelje. Naravno, da se to u praksi ne bi tak radilo, jer je generalno korisno da instanceof
na objekt tipa Sentence
i tip Text
vrati True
.
Iskreno bih napisao ta razmišljanja, možeš dobiti puno bodova na tome. Ja bih napisao da strukturalno najviše odgovara okvirnoj metodi ali da funkcionalno sliči dekoratoru. F ti nije apstraktna strategija, nego čini mi se nekakva podatkovna klasa, to se da komotno ignorirati. Možda su je tak definirali da zbune ljude da je dekorator.