Observer Design Pattern ieviešana programmā TypeScript

Observer Design Pattern ieviešana programmā TypeScript

Dizaina modelis ir veidne, kas atrisina bieži atkārtotu programmatūras izstrādes problēmu.





Novērotāju modelis, kas pazīstams arī kā publicēšanas-abonēšanas modelis, ir uzvedības modelis. Tas ļauj jums paziņot vairākiem objektiem vai abonentiem par jebkuru notikumu, kas ir publicēts objektā, kuru viņi novēro.





DIENAS VIDEO MAKEUSEOF

Šeit jūs uzzināsit, kā ieviest novērotāja dizaina modeli programmā TypeScript.





Novērotāja modelis

Novērotāja modelis darbojas, definējot attiecības viens pret daudziem starp izdevēju un tā abonentiem. Kad izdevējā notiek notikums, tas informēs visus abonentus par šo notikumu. Viens plaši izplatīts šī modeļa piemērs ir JavaScript notikumu klausītāji .

Kontekstam pieņemsim, ka veidojat krājumu izsekotāju, kas seko līdzi preču skaitam jūsu veikalā. Šajā gadījumā jūsu veikals ir subjekts/izdevējs, un jūsu krājumi ir novērotājs/abonents. Šajā situācijā optimāli būtu izmantot novērotāja dizaina modeli.



Novērotāja dizaina modelī jūsu mācību priekšmeta klasei ir jāievieš trīs metodes:

  • An pievienot metodi. Šī metode objektam pievieno novērotāju.
  • A atdalīties metodi. Šī metode no objekta noņem novērotāju.
  • A paziņot/atjaunināt metodi. Šī metode informē subjekta novērotājus, kad mainās subjekta stāvoklis.

Jūsu novērotāju klasei ir jāievieš viena metode, the Atjaunināt metodi. Šī metode reaģē, ja mainās tās subjekta stāvoklis.





Subjektu un novērotāju klašu ieviešana

Pirmais solis, lai ieviestu šo modeli, ir izveidot saskarnes subjekta un novērotāja klasei, lai nodrošinātu, ka viņi ievieš pareizās metodes:

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

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

Iepriekš minētajā koda blokā esošās saskarnes nosaka metodes, kas jāīsteno jūsu konkrētajām klasēm.





kā uzlauzt klēpjdatora kameru attālināti

Konkrētu priekšmetu klase

Nākamais solis ir ieviest konkrētu priekšmetu klasi, kas īsteno Priekšmets interfeiss:

// Subject 
class Store implements Subject {}

Pēc tam inicializējiet Priekšmets ’s stāvoklī Veikals klasē. Objekta novērotāji reaģēs uz šī stāvokļa izmaiņām.

Šajā gadījumā stāvoklis ir skaitlis, un novērotāji reaģēs uz skaita pieaugumu:

// Subject state 
private numberOfProducts: number;

Pēc tam inicializējiet novērotāju masīvu. Šis masīvs ir veids, kā sekot līdzi novērotājiem:

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