Implementacija uzorka dizajna promatrača u TypeScriptu

Implementacija uzorka dizajna promatrača u TypeScriptu

Uzorak dizajna je predložak koji rješava problem koji se često ponavlja u dizajnu softvera.





Uzorak promatrača, poznat i kao obrazac objavljivanja-pretplate, obrazac je ponašanja. Omogućuje vam da obavijestite više objekata ili pretplatnika o bilo kojem događaju koji je objavljen u objektu koji promatraju.





MAKEUSEOF VIDEO DANA

Ovdje ćete naučiti kako implementirati uzorak dizajna promatrača u TypeScriptu.





Uzorak promatrača

Uzorak promatrača funkcionira tako da definira odnos jedan prema više između izdavača i njegovih pretplatnika. Kada se dogodi događaj u izdavaču, on će obavijestiti sve pretplatnike na taj događaj. Jedan rašireni primjer ovog obrasca je JavaScript slušatelji događaja .

Za kontekst, pretpostavimo da gradite alat za praćenje inventara koji prati broj proizvoda u vašoj trgovini. U ovom slučaju, vaša trgovina je subjekt/izdavač, a vaš inventar je promatrač/pretplatnik. Korištenje uzorka dizajna promatrača bilo bi optimalno u ovoj situaciji.



U uzorku dizajna promatrača, vaša predmetna klasa mora implementirati tri metode:

  • An priložiti metoda. Ova metoda subjektu dodaje promatrača.
  • A odvojiti metoda. Ova metoda uklanja promatrača od subjekta.
  • A obavijestiti/ažurirati metoda. Ova metoda obavještava promatrače subjekta kada se stanje subjekta promijeni.

Vaša klasa promatrača mora implementirati jednu metodu, Ažuriraj metoda. Ova metoda reagira kada dođe do promjene u stanju subjekta.





Implementacija nastave predmeta i promatrača

Prvi korak u implementaciji ovog uzorka je stvaranje sučelja za klasu subjekta i promatrača, kako bi se osiguralo da implementiraju ispravne metode:

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

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

Sučelja u gornjem bloku koda definiraju metode koje vaše konkretne klase moraju implementirati.





Razred konkretnog predmeta

Sljedeći korak je implementacija konkretne predmetne klase koja implementira Predmet sučelje:

kako prisilno zatvoriti program u sustavu Windows 10 bez upravitelja zadataka
// Subject 
class Store implements Subject {}

Zatim inicijalizirajte Predmet stanje u Store razreda. Promatrači subjekta će reagirati na promjene ovog stanja.

U ovom slučaju, stanje je broj, a promatrači će reagirati na povećanje broja:

// Subject state 
private numberOfProducts: number;

Zatim inicijalizirajte niz promatrača. Ovaj niz je način na koji ćete pratiti promatrače:

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