Einführung und Verwendung des JS-Beobachtermodus

Einführung und Verwendung des JS-Beobachtermodus

Durch den Fall sollten wir in der Lage sein, die verschiedenen Objekte und Funktionen im Beobachtermuster zu unterscheiden. Als nächstes die Codierung

4. Kodierung

1. Dame an der Rezeption (Melderin)

/*
 * desc: Benachrichtigungsklasse* 1. Beobachter speichern* 2. Beobachter hinzufügen* 3. Beobachter entfernen* 4. Beobachter benachrichtigen*/
Klasse Dep {
    Konstruktor() {
        //Speicherbeobachter this.subs = []
    }

    /**
     * Beobachter hinzufügen * @param {Beobachterobjekt} sub 
     */
    addSubs(sub) {
        // Stelle sicher, dass alle Beobachter über Update-Methoden verfügen if (sub && sub.update) {
            dies.subs.push(sub)
        }
    }

    /**
     * Beobachter entfernen * @param {zu entfernendes Beobachterobjekt} sub 
     */
    entferneSub(sub) {
        dies.subs.forEach((Element, Index) => {
            wenn (sub.id === item.id) {
                dies.subs.splice(index, 1)
                zurückkehren;
            }
        })
    }

    /**
     * Benachrichtigen Sie den Beobachter, rufen Sie die Aktualisierungsmethode in allen Beobachtern auf und ändern Sie ihren eigenen Status * */
    benachrichtigen() {
        dies.subs.forEach(sub => {
            unter.update()
        })
    }
}

2. Programmiererklasse (Beobachterklasse)

/**
 * Beobachterobjekt */
Klassenbeobachter {
    Konstruktor(Name) {
        dieser.name = Name
    }

    //Observer-Objekte haben ihre eigene Update-Methode um ihren Arbeitsstatus zu ändern update() {
        console.log(`${this.name} hat eine Benachrichtigung erhalten und den Arbeitsstatus geändert.`)
    }
}
/**
 * Beobachterobjekt */
Klassenbeobachter {
    Konstruktor(Name) {
        dieser.name = Name
    }

    //Observer-Objekte haben ihre eigene Update-Methode um ihren Arbeitsstatus zu ändern update() {
        console.log(`${this.name} hat eine Benachrichtigung erhalten und den Arbeitsstatus geändert.`)
    }
}

3. Simulieren Sie die Rückkehr des Chefs ins Unternehmen, und die Dame an der Rezeption benachrichtigt den Programmierer

 <script src="./js/Dep.js"></script>
 <script src="./js/Watcher.js"></script>
 <Skript>
        // Kollege Zhang San const tongshi1 = new watcher("Zhang San")

        // Kollege Li Si const tongshi2 = new watcher("Li Si")

        //Die Dame an der Rezeption muss wissen, welche Kollegen benachrichtigt werden müssen, und die Kollegen sammeln, die benachrichtigt werden müssen. const xiaojiejie = new Dep();
        xiaojiejie.addSubs(tongshi1)
        xiaojiejie.addSubs(tongshi2)

        //Warten auf die Rückkehr des Chefs...
        // Warte, warte …
        // Warte, warte …
        // Warte, warte …
        // Warte, warte …
        //Der Chef ist zurück//Wenn der Chef zurückkommt, ruft die Dame an der Rezeption ihre eigene Benachrichtigungsmethode auf, um die Programmierer zu benachrichtigen, dass sie ihren eigenen Status ändern sollenxiaojiejie.notify()
    </Skript>

Dies ist das Ende dieses Artikels über die Einführung und den Verwendungshintergrund des Beobachtermusters im Java-Entwurfsmuster. Weitere relevante Inhalte zum Beobachtermuster finden Sie in den vorherigen Artikeln von 123WORDPRESS.COM oder in den folgenden verwandten Artikeln. Ich hoffe, dass jeder 123WORDPRESS.COM in Zukunft unterstützen wird!

Das könnte Sie auch interessieren:
  • So implementieren Sie das Beobachtermuster in JavaScript
  • js Beobachtermodus Bullet-Screen-Fall
  • JavaScript-Entwurfsmuster: Detaillierte Erläuterung des Beobachtermodus und des Publish-Subscribe-Modus
  • JavaScript-Entwurfsmuster – Prinzipien und Anwendungsbeispiele des Observer-Musters
  • Einfaches Beispiel für den in nativem JS implementierten Beobachter- und Abonnentenmodus
  • Prinzipien und Anwendungsbeispiele für das JavaScript Observer Pattern
  • Bringen Sie Ihnen bei, wie Sie den Beobachtermodus in Javascript implementieren

I. Definition

Das Beobachtermuster definiert eine Eins-zu-viele-Abhängigkeitsbeziehung, die es mehreren Beobachterobjekten ermöglicht, gleichzeitig ein Subjektobjekt (Benachrichtiger) zu überwachen. Wenn das Subjektobjekt Änderungen am beobachteten Objekt feststellt, benachrichtigt es alle Beobachterobjekte, damit diese sich selbst aktualisieren können.

Dabei spielen mehrere Rollen mit jeweils eigenen Funktionen eine Rolle:

  1. Beobachterobjekt: kann sich selbst aktualisieren
  2. Subjektobjekt: kann Beobachter hinzufügen, Beobachter entfernen und Beobachter benachrichtigen
  3. Beobachter: Wird vom Subjektobjekt überwacht. Wenn sich das beobachtete Objekt ändert, benachrichtigt das Subjektobjekt den Beobachter, damit dieser seinen Status aktualisiert.

2. Anwendungsszenarien

Wenn eine Änderung an einem Objekt gleichzeitig Änderungen an anderen Objekten erfordert und es nicht erforderlich ist, zu wissen, wie viele Objekte geändert werden müssen

3. Geben Sie ein Beispiel

Wenn die trockene Konzeptbeschreibung unklar und schwer zu verstehen ist, geben Sie ein Beispiel aus dem Alltag, um es zu erklären

Szenario 1:

​ Im Bürogebäude, vor dem Computer. Eine Gruppe von Programmierern nutzte die Geschäftsreise ihres Chefs dazu, sich auf ihren Computern NBA-Spiele anzuschauen und dabei von Zeit zu Zeit aufgeregt zu schreien. In diesem Moment kam der Chef von einer Geschäftsreise zurück und sah sie zufällig, was zu einer unangenehmen Situation führte.

Lösung:

​ Um nicht vom Chef beim Faulenzen in der Firma erwischt zu werden, haben sich ein paar Leute einen Plan ausgedacht, um die Dame an der Rezeption zu bestechen. Als der Chef wieder in die Firma kam, benachrichtigte das Mädchen sofort die Programmierer und forderte sie auf, an ihre Arbeit zurückzukehren.

Szenario 2:

​ Im Bürogebäude, vor dem Computer. Eine Gruppe von Programmierern nutzte die Geschäftsreise ihres Chefs dazu, sich auf ihren Computern NBA-Spiele anzuschauen und dabei von Zeit zu Zeit aufgeregt zu schreien. Zu diesem Zeitpunkt kam der Chef von einer Geschäftsreise zurück. Als die Dame an der Rezeption sah, dass der Chef zurückkam, benachrichtigte sie sofort die Jungs, die das Spiel sahen. Zu diesem Zeitpunkt wechselten die jungen Männer schnell in den Arbeitsmodus.

Szenario 2 verwendet das Beobachtermuster. Wenn der Chef zurückkommt, müssen die Programmierer ihren Paddelstatus ändern und die Dame an der Rezeption ist dafür verantwortlich, sie darüber zu benachrichtigen.

Figur Rolle Funktion
Programmierer Beobachter Kann Ihren Status ändern
Dame an der Rezeption Betreff (Melder) Sammeln, entfernen und speichern Sie Programmierer (Beobachter), die benachrichtigt werden müssen, und senden Sie Benachrichtigungen an Programmierer
Chef Der Beobachter Von der Dame an der Rezeption beobachtet

<<:  So verwenden Sie Bind zum Einrichten eines DNS-Servers

>>:  Lösung für das Problem des achtstündigen Unterschieds bei der MySQL-Einfügezeit

Artikel empfehlen

Installation und Bereitstellung des MySQL Routers

Inhaltsverzeichnis 01 Einführung in MySQL Router ...

Vue3.0+vite2 implementiert dynamisches asynchrones Lazy Loading von Komponenten

Inhaltsverzeichnis Erstellen Sie ein Vite-Projekt...

CSS steuert den Abstand zwischen Wörtern durch die Eigenschaft „letter-spacing“

Eigenschaft „letter-spacing“ : Vergrößern oder ve...

Vue implementiert Fuzzy-Abfrage-MySQL-Datenbankdaten

Inhaltsverzeichnis 1. Nachfrage 2. Umsetzung 3. E...

Grundlegendes Einführungstutorial zu MySQL-Partitionstabellen

Vorwort In einem aktuellen Projekt mussten wir ei...

Beispielcode zur Realisierung des Ladeeffekts der B-Station mit CSS+SVG

Schwierigkeit Erstellung von zwei Masken für SVG-...