Implementácia vzoru Observer Design Pattern v TypeScript

Implementácia vzoru Observer Design Pattern v TypeScript

Návrhový vzor je šablóna, ktorá rieši bežne sa opakujúci problém pri návrhu softvéru.





Vzor pozorovateľa, známy aj ako vzor zverejnenia a predplatenia, je vzorom správania. Umožňuje vám upozorniť viaceré objekty alebo predplatiteľov na akúkoľvek udalosť, ktorá je zverejnená v objekte, ktorý pozorujú.





VYUŽITIE VIDEA DŇA

Tu sa dozviete, ako implementovať návrhový vzor pozorovateľa v TypeScript.





Vzor pozorovateľa

Vzor pozorovateľa funguje tak, že definuje vzťah jeden k mnohým medzi vydavateľom a jeho predplatiteľmi. Keď sa vo vydavateľstve vyskytne udalosť, upozorní na ňu všetkých predplatiteľov. Jedným z rozšírených príkladov tohto vzoru je Prijímače udalostí JavaScript .

Pre kontext predpokladajme, že vytvárate nástroj na sledovanie zásob, ktorý sleduje počet produktov vo vašom obchode. V tomto prípade je váš obchod subjekt/vydavateľ a váš inventár je pozorovateľ/odberateľ. V tejto situácii by bolo optimálne použiť návrhový vzor pozorovateľa.



ako vytvoriť skupinu e -mailov v programe Outlook

Vo vzore návrhu pozorovateľa musí vaša trieda predmetov implementovať tri metódy:

  • An priložiť metóda. Táto metóda pridáva k subjektu pozorovateľa.
  • A oddeliť metóda. Táto metóda odstraňuje pozorovateľa z objektu.
  • A upozorniť/aktualizovať metóda. Táto metóda upozorní pozorovateľov subjektu, keď sa u subjektu zmení stav.

Vaša trieda pozorovateľov musí implementovať jednu metódu, aktualizovať metóda. Táto metóda reaguje, keď dôjde k zmene stavu subjektu.





Implementácia tried subjekt a pozorovateľ

Prvým krokom k implementácii tohto vzoru je vytvorenie rozhraní pre triedu subjektu a pozorovateľa, aby sa zabezpečilo, že implementujú správne metódy:

// Subject/Publisher Interface 
interface Subject {
attachObserver(observer: Observer): void;
detachObserver(observer: Observer): void;
notifyObserver(): void;
}

// Observer/Subscriber Interface
interface Observer {
update(subject: Subject): void;
}

Rozhrania v bloku kódu vyššie definujú metódy, ktoré musia implementovať vaše konkrétne triedy.





Trieda konkrétnych predmetov

Ďalším krokom je implementácia konkrétnej triedy predmetov, ktorá implementuje Predmet rozhranie:

// Subject 
class Store implements Subject {}

Ďalej inicializujte Predmet stav v Obchod trieda. Pozorovatelia subjektu budú reagovať na zmeny tohto stavu.

ako zistiť, na ktorých webových stránkach je zaregistrovaný môj e -mail

V tomto prípade je stav číslo a pozorovatelia budú reagovať na zvýšenie počtu:

// Subject state 
private numberOfProducts: number;

Ďalej inicializujte pole pozorovateľov. Toto pole je spôsob, akým budete sledovať pozorovateľov:

// initializing observers 
private observers: Observer[] = [];