Un modèle de conception est un modèle qui résout un problème récurrent dans la conception de logiciels.
Le modèle d'observateur, également appelé modèle de publication-abonnement, est un modèle comportemental. Il vous permet d'informer plusieurs objets ou abonnés de tout événement publié dans l'objet qu'ils observent.
UTILISEZ LA VIDÉO DU JOUR
Ici, vous apprendrez à implémenter le modèle de conception d'observateur dans TypeScript.
Le modèle d'observateur
Le modèle d'observateur fonctionne en définissant une relation un-à-plusieurs entre l'éditeur et ses abonnés. Lorsqu'un événement se produit dans l'éditeur, il avertit tous les abonnés à cet événement. Un exemple répandu de ce modèle est Écouteurs d'événements JavaScript .
Pour le contexte, supposons que vous construisez un outil de suivi des stocks qui suit le nombre de produits dans votre magasin. Dans ce cas, votre magasin est le sujet/éditeur, et votre inventaire est l'observateur/abonné. L'utilisation du modèle de conception d'observateur serait optimale dans cette situation.
comment faire le mode portrait sur iphone 7
Dans le modèle de conception d'observateur, votre classe de sujet doit implémenter trois méthodes :
- Un joindre méthode. Cette méthode ajoute un observateur au sujet.
- UN détacher méthode. Cette méthode supprime un observateur d'un sujet.
- UN notifier/mettre à jour méthode. Cette méthode avertit les observateurs du sujet lorsque l'état change dans le sujet.
Votre classe d'observateur doit implémenter une méthode, la mettre à jour méthode. Cette méthode réagit lorsqu'il y a un changement dans l'état de son sujet.
Implémentation des classes de sujet et d'observateur
La première étape de l'implémentation de ce modèle consiste à créer des interfaces pour le sujet et la classe d'observateur, afin de s'assurer qu'ils implémentent les bonnes méthodes :
// 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 interfaces du bloc de code ci-dessus définissent les méthodes que vos classes concrètes doivent implémenter.
Une classe de sujets concrets
L'étape suivante consiste à implémenter une classe de sujet concrète qui implémente le Matière interface:
Windows ne peut pas redémarrer dans l'environnement de récupération
// Subject
class Store implements Subject {}
Ensuite, initialisez le Matière l'état dans le Magasin classer. Les observateurs du sujet réagiront aux changements de cet état.
Dans ce cas, l'état est un nombre, et les observateurs réagiront à une augmentation du nombre :
// Subject state
private numberOfProducts: number;
Ensuite, initialisez un tableau d'observateurs. Ce tableau vous permet de suivre les observateurs :
// initializing observers
private observers: Observer[] = [];