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[] = [];