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

Umfassendes Verständnis von Zeilenhöhe und vertikaler Ausrichtung

Vorherige Wörter Zeilenhöhe, Schriftgröße und vert...

Über die Überlappung von Randwert und vertikalem Rand in CSS

Rand paralleler Boxen (Überlappung doppelter Ränd...

Detaillierte Erklärung der Linux-RPM- und Yum-Befehle und -Verwendung

RPM-Paketverwaltung Ein Verpackungs- und Installa...

So installieren und implementieren Sie einen FTP-Image-Server unter Linux

Lesen Sie das Tutorial zum Einrichten eines FTP-S...

Vue implementiert ein einfaches Einkaufswagenbeispiel

In diesem Artikelbeispiel wird der spezifische Co...

Grafisches Tutorial zur Installation und Verwendung von MySQL 5.7.17

MySQL ist ein relationales Datenbankverwaltungssy...

JavaScript zum Erzielen eines Kalendereffekts

In diesem Artikel wird der spezifische Code für J...

Ein Bugfix für Tomcats automatisches Herunterfahren

Vorwort Bei einem seit 4 Jahren laufenden Java EE...

Zwei Möglichkeiten zum Öffnen und Schließen des MySQL-Dienstes

Methode 1: Verwenden Sie den cmd-Befehl Öffnen Si...

So ändern Sie die inländische Quelle von Ubuntu 20.04 apt

UPD 2020.2.26 Derzeit ist Ubuntu 20.04 LTS noch n...

Detaillierte Erläuterung des Beispielcodes für das elastische CSS3 Flex-Layout

1. Grundlegende Konzepte //Jeder Container kann a...