"Si un ouvrier veut bien faire son travail, il doit d'abord affûter ses outils." - Confucius, "Les Entretiens de Confucius. Lu Linggong"
Page de garde > La programmation > Modèles de conception JavaScript - Comportementaux - Observateur

Modèles de conception JavaScript - Comportementaux - Observateur

Publié le 2024-08-18
Parcourir:234

JavaScript Design Patterns - Behavioral - Observer

Le modèle observateur permet de définir une dépendance un-à-plusieurs entre les objets afin que toutes ses dépendances soient notifiées et mises à jour automatiquement lorsqu'un objet change d'état.

Dans cet exemple, nous créons un produit de classe simple que d'autres classes peuvent observer en s'enregistrant sur les modifications apportées à la méthode register(). Lorsque quelque chose est mis à jour, la méthode notifyAll() communiquera avec tous les observateurs au sujet de ces changements.

class ObservedProduct {
  constructor() {
    this.price = 0;
    this.actions = [];
  }

  setBasePrice(val) {
    this.price = val;
    this.notifyAll();
  }

  register(observer) {
    this.actions.push(observer);
  }

  unregister(observer) {
    this.actions.remove.filter(function (el) {
      return el !== observer;
    });
  }

  notifyAll() {
    return this.actions.forEach(
      function (el) {
        el.update(this);
      }.bind(this)
    );
  }
}

class Fees {
  update(product) {
    product.price = product.price * 1.2;
  }
}

class Profit {
  update(product) {
    product.price = product.price * 2;
  }
}

export { ObservedProduct, Fees, Profit };

Un exemple complet est ici ? https://stackblitz.com/edit/vitejs-vite-kyucyd?file=main.js

Conclusion

Utilisez ce modèle lorsque les modifications apportées à l'état d'un objet peuvent nécessiter la modification d'autres objets et que l'ensemble réel d'objets est inconnu au préalable ou change dynamiquement.


J'espère que cela vous a été utile. Merci d'avoir lu. ?

Connectons-nous ! Vous pouvez me trouver sur :

  • Moyen : https://medium.com/@nhannguyendevjs/
  • Dév : https://dev.to/nhannguyendevjs/
  • Hashnode : https://nhannguyen.hashnode.dev/
  • Linkedin : https://www.linkedin.com/in/nhannguyendevjs/
  • X (anciennement Twitter) : https://twitter.com/nhannguyendevjs/
  • Achetez-moi un café : https://www.buymeacoffee.com/nhannguyendevjs
Déclaration de sortie Cet article est reproduit sur : https://dev.to/nhannguyendevjs/javascript-design-patterns-behavioral-observer-g70?1 En cas de violation, veuillez contacter [email protected] pour le supprimer.
Dernier tutoriel Plus>

Clause de non-responsabilité: Toutes les ressources fournies proviennent en partie d'Internet. En cas de violation de vos droits d'auteur ou d'autres droits et intérêts, veuillez expliquer les raisons détaillées et fournir une preuve du droit d'auteur ou des droits et intérêts, puis l'envoyer à l'adresse e-mail : [email protected]. Nous nous en occuperons pour vous dans les plus brefs délais.

Copyright© 2022 湘ICP备2022001581号-3