Autor Zpráva
joe
Profil
Ahoj,

píšu si knihovnu a řekněme, že bych uvnitř chtěl používat funkce, které mají nějakou výchozí implementaci, ale chci umožnit tuto implementaci změnit za vlastní. Jak na to?

Konkrétní příklad (není sice vhodný, ale jen pro vysvětlení), v kódu budu volat třeba $$(selektor), což mi vrátí kolekci elementů odpovídající selektoru. V knihovně tato funkce bude implementována čistým JavaScriptem. Kdokoli bude knihovnu používat bude moci ale napsat své vlastní implementace, třeba s využitím jQuery.

Mám to psáno v TypeScriptu.

Díky za rady
Keeehi
Profil
Použij decorator pattern.
yFang
Profil
joe:
Použil bych Strategy pattern. Uděláš nějakou defaultní strategy, která se bude používat a uživatel knihovny bude moct napsat vlastní a nastavit ji místo defaultní.
joe
Profil
Díky za rady, patternů je nějak hodně, sám jich moc neznám a možná nějaké používám, ani o tom nevím. V tomto případě bych se přikláněj spíše ke Strategy patternu, využití interface jsem plánoval, pak jsem si ale řekl, že ta třída by mohla mít statické metody, byly by to spíše takové helpery, pak už by možná vlastně jen stačilo, aby se načetl v kódu jiný soubor a nic jiného se neřešilo (?) a ten interface by tam byl takový pomyslný (?)
tiso
Profil
joe: „aby se načetl v kódu jiný soubor a nic jiného se neřešilo
Takže chceš, aby sa vlastne tá tvoja knižnica nepoužívala? To nie je problém.
joe
Profil
tiso:
Ne, ta má knihovna je tvořena několika soubory a momentálně řeším minifikaci tak, že vezmu kód knihovny a aplikace postavené na ní a teprve poté kód zminifikuju. Myslel jsem jeden soubor, že se nahradí za jiný, když bude potřeba.
tiso
Profil
joe: takže potrebuješ niečo ako jQuery UI Download Builder s tým, že si tam niekto môže nahrať vlastnú verziu skriptov? A budeš validovať, že tvoj a jeho súbor obsahuje všetky funkcie s rovnakými parametrami a návratovými hodnotami?

Vaše odpověď


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm: