Implementació del patró de disseny Observer en TypeScript

Implementació del patró de disseny Observer en TypeScript

Un patró de disseny és una plantilla que resol un problema habitual en el disseny de programari.





El patró d'observador, també conegut com a patró de publicació-subscripció, és un patró de comportament. Us permet notificar a diversos objectes o subscriptors sobre qualsevol esdeveniment que es publiqui a l'objecte que estan observant.





es pot jugar a jocs ps3 a la consola PS4
MAKEUSEO VÍDEO DEL DIA

Aquí aprendràs a implementar el patró de disseny d'observador a TypeScript.





El patró de l'observador

El patró d'observador funciona definint una relació d'un a molts entre l'editor i els seus subscriptors. Quan es produeix un esdeveniment a l'editor, notificarà a tots els subscriptors d'aquest esdeveniment. Un exemple generalitzat d'aquest patró és Oients d'esdeveniments JavaScript .

Per context, suposeu que esteu creant un rastrejador d'inventari que fa un seguiment del nombre de productes de la vostra botiga. En aquest cas, la vostra botiga és el subjecte/editor, i el vostre inventari és l'observador/subscriptor. L'ús del patró de disseny d'observador seria òptim en aquesta situació.



En el patró de disseny de l'observador, la classe d'assignatura ha d'implementar tres mètodes:

  • An adjuntar mètode. Aquest mètode afegeix un observador al subjecte.
  • A separar mètode. Aquest mètode elimina un observador d'un subjecte.
  • A notificar/actualitzar mètode. Aquest mètode notifica als observadors del subjecte quan l'estat canvia en el subjecte.

La vostra classe d'observador ha d'implementar un mètode, el actualitzar mètode. Aquest mètode reacciona quan hi ha un canvi en l'estat del subjecte.





com connectar l’interruptor a la televisió

Implementació de les classes de subjecte i observador

El primer pas per implementar aquest patró és crear interfícies per al subjecte i la classe d'observador, per assegurar-se que implementen els mètodes correctes:

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

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

Les interfícies del bloc de codi anterior defineixen els mètodes que han d'implementar les vostres classes concretes.





Una classe d'assignatures concretes

El següent pas és implementar una classe de matèria concreta que implementi el Assignatura interfície:

// Subject 
class Store implements Subject {}

A continuació, inicialitzeu el fitxer Assignatura l'estat a Botiga classe. Els observadors del subjecte reaccionaran als canvis en aquest estat.

En aquest cas, l'estat és un nombre i els observadors reaccionaran davant un augment del nombre:

// Subject state 
private numberOfProducts: number;

A continuació, inicialitzeu una matriu d'observadors. Aquesta matriu és com fareu un seguiment dels observadors:

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