Inhaltsverzeichnis
Implementiert
Test
Heim Web-Frontend js-Tutorial Detaillierte Erläuterung des js-Chain-of-Responsibility-Modells

Detaillierte Erläuterung des js-Chain-of-Responsibility-Modells

Feb 28, 2018 pm 02:22 PM
javascript 模式 详解

Das Verantwortungskettenmuster bezieht sich auf die Tatsache, dass eine Anfrage die Verarbeitung mehrerer Objekte erfordert, wodurch die Kopplungsbeziehung zwischen dem Absender und dem Empfänger der Anfrage vermieden wird. Diese Objekte werden zu einer Kette verbunden und die Anforderung wird entlang der Kette weitergeleitet, bis sie von einem Objekt verarbeitet wird.

Anhand realer Beispiele können wir erkennen, dass eine bestimmte Anfrage möglicherweise die Genehmigung mehrerer Personen erfordert. Selbst wenn der technische Manager sie genehmigt hat, muss sie dennoch von einer höheren Ebene genehmigt werden. Wenn der Urlaub im Unternehmen beispielsweise weniger als 3 Tage beträgt, kann er vom direkten Vorgesetzten genehmigt werden. Wenn er zwischen 3 und 7 Tagen beträgt, ist die Genehmigung des Projektmanagers erforderlich die Zustimmung des technischen Leiters. Nachdem wir so viele Beispiele für das Muster der Verantwortungskette im Leben vorgestellt haben, wird im Folgenden die Definition des Musters der Verantwortungskette im objektorientierten Bereich gegeben.

Die am Verantwortungskettenmodell beteiligten Objekte haben nur die Handler-Rolle, aber da es mehrere Handler gibt, verfügen sie über eine gemeinsame Methode zur Verarbeitung von Anforderungen, sodass hier eine abstrakte Handler-Rolle zur Code-Wiederverwendung abstrahiert wird.

Detaillierte Erläuterung des js-Chain-of-Responsibility-Modells

Implementiert

  • Anforderungsklasse

    // 采购请求
    let PurchaseRequest = function (amount, productName) {
        this.amount = amount;
        this.productName = productName;
    };
    Nach dem Login kopieren
  • Verarbeitung Schnittstellenklasse

    // 审批人,Handler
    let Approver = function (name, nextApprover) {
        this.name = name;
        this.nextApprover = nextApprover;
    };
    Approver.prototype.processRequest = function () {
        throw new Error();  
    };
    Nach dem Login kopieren
  • Handler-Klasse

    // ConcreteHandler
    let Manager = function (name, nextApprover) {
        Approver.call(this, name, nextApprover);
    };
    extend(Manager, Approver);
    Manager.prototype.processRequest = function (request) {
        if (request.Amount < 10000.0)
        {
            console.log('ok');
        }
        else if (NextApprover != null)
        {
            this.nextApprover.ProcessRequest(request);
        }   
    };    
        
    // ConcreteHandler,副总
    let VicePresident = function (name, nextApprover) {
        Approver.call(this, name, nextApprover);
    };
    extend(VicePresident, Approver);
    VicePresident.prototype.processRequest = function (request) {
        if (request.Amount < 25000.0)
        {
            console.log('ok');
        }
        else if (NextApprover != null)
        {
            this.nextApprover.ProcessRequest(request);
        }   
    };
    
    
    // ConcreteHandler,总经理
    let President = function (name, nextApprover) {
        Approver.call(this, name, nextApprover);
    };
    extend(President, Approver);
    President.prototype.processRequest = function (request) {
        if (request.Amount < 100000.0)
        {
            console.log('ok');
        }
        else if (NextApprover != null)
        {
            this.nextApprover.ProcessRequest(request);
        }   
    };
    Nach dem Login kopieren

Test

let requestTelphone = new PurchaseRequest(4000.0, "Telphone");
let requestSoftware = new PurchaseRequest(10000.0, "Visual Studio");
let requestComputers = new PurchaseRequest(40000.0, "Computers");

let manager = new Manager("LearningHard");
let Vp = new VicePresident("Tony");
let Pre = new President("BossTom");

// 设置责任链
manager.NextApprover = Vp;
Vp.NextApprover = Pre;

// 处理请求
manager.ProcessRequest(requestTelphone);
manager.ProcessRequest(requestSoftware);
manager.ProcessRequest(requestComputers);
Nach dem Login kopieren

Szenario verwenden

  • Eine Situation, in der die Genehmigung eines Systems mehrere Objekte erfordert, um die Verarbeitung abzuschließen, z. B. ein Urlaubssystem usw.

  • Wenn der Code mehrere if-else-Anweisungen enthält, können Sie erwägen, das Chain-of-Responsibility-Muster zu verwenden, um den Code umzugestalten.

Funktionen

  • Reduzieren Sie die Kopplung zwischen Sender und Empfänger der Anfrage.

  • Verteilen Sie mehrere bedingte Urteile in verschiedene Verarbeitungsklassen, um den Code klarer und die Verantwortlichkeiten klarer zu machen.

Das Chain-of-Responsibility-Modell weist auch bestimmte Mängel auf, wie zum Beispiel:

  • Bevor das richtige Verarbeitungsobjekt gefunden wird, müssen alle bedingten Beurteilungen ausgeführt werden Auch hier gilt: Wenn die Verantwortungskette zu lang ist, kann es zu Leistungsproblemen kommen, die dazu führen können, dass eine bestimmte Anfrage nicht verarbeitet wird.

Zusammenfassung

  • Die Verantwortungskette reduziert die Kopplung zwischen dem Anforderer und dem Empfänger, sodass mehrere Objekte die Möglichkeit haben, eine Anfrage zu bearbeiten . Macht die Aufteilung der Verantwortlichkeiten konkreter und trägt zur Erweiterung bei

Verwandte Empfehlungen:

Einführung in das JavaScript-Verantwortungskettenmodell

Beispielanalyse eines Verantwortungskettenmusters in Java-Designmustern

Verantwortungskettenmuster gängiger Designmuster und deren PHP-Implementierung

Das obige ist der detaillierte Inhalt vonDetaillierte Erläuterung des js-Chain-of-Responsibility-Modells. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn

Heiße KI -Werkzeuge

Undresser.AI Undress

Undresser.AI Undress

KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover

AI Clothes Remover

Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool

Undress AI Tool

Ausziehbilder kostenlos

Clothoff.io

Clothoff.io

KI-Kleiderentferner

AI Hentai Generator

AI Hentai Generator

Erstellen Sie kostenlos Ai Hentai.

Heißer Artikel

R.E.P.O. Energiekristalle erklärten und was sie tun (gelber Kristall)
4 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Beste grafische Einstellungen
4 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. So reparieren Sie Audio, wenn Sie niemanden hören können
4 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌
WWE 2K25: Wie man alles in Myrise freischaltet
1 Monate vor By 尊渡假赌尊渡假赌尊渡假赌

Heiße Werkzeuge

Notepad++7.3.1

Notepad++7.3.1

Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version

SublimeText3 chinesische Version

Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1

Senden Sie Studio 13.0.1

Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6

Dreamweaver CS6

Visuelle Webentwicklungstools

SublimeText3 Mac-Version

SublimeText3 Mac-Version

Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Was bewirkt der „Bitte nicht stören'-Modus von WeChat? Was bewirkt der „Bitte nicht stören'-Modus von WeChat? Feb 23, 2024 pm 10:48 PM

Was bedeutet der „Bitte nicht stören“-Modus von WeChat? Mit der Popularität von Smartphones und der rasanten Entwicklung des mobilen Internets sind Social-Media-Plattformen zu einem unverzichtbaren Bestandteil des täglichen Lebens der Menschen geworden. WeChat ist eine der beliebtesten Social-Media-Plattformen in China und fast jeder hat ein WeChat-Konto. Über WeChat können wir in Echtzeit mit Freunden, Familie und Kollegen kommunizieren, Momente in unserem Leben teilen und die aktuelle Situation des anderen verstehen. Allerdings sind wir in dieser Zeit zwangsläufig auch mit den Problemen der Informationsüberflutung und des Verlusts der Privatsphäre konfrontiert, insbesondere für diejenigen, die sich konzentrieren müssen oder

Ausführliche Erklärung zur Erlangung von Administratorrechten in Win11 Ausführliche Erklärung zur Erlangung von Administratorrechten in Win11 Mar 08, 2024 pm 03:06 PM

Das Windows-Betriebssystem ist eines der beliebtesten Betriebssysteme der Welt und seine neue Version Win11 hat viel Aufmerksamkeit erregt. Im Win11-System ist die Erlangung von Administratorrechten ein wichtiger Vorgang. Mit Administratorrechten können Benutzer weitere Vorgänge und Einstellungen auf dem System durchführen. In diesem Artikel wird ausführlich beschrieben, wie Sie Administratorrechte im Win11-System erhalten und wie Sie Berechtigungen effektiv verwalten. Im Win11-System werden Administratorrechte in zwei Typen unterteilt: lokaler Administrator und Domänenadministrator. Ein lokaler Administrator verfügt über vollständige Administratorrechte für den lokalen Computer

Detaillierte Erläuterung der Divisionsoperation in Oracle SQL Detaillierte Erläuterung der Divisionsoperation in Oracle SQL Mar 10, 2024 am 09:51 AM

Detaillierte Erläuterung der Divisionsoperation in OracleSQL In OracleSQL ist die Divisionsoperation eine häufige und wichtige mathematische Operation, die zur Berechnung des Ergebnisses der Division zweier Zahlen verwendet wird. Division wird häufig in Datenbankabfragen verwendet. Daher ist das Verständnis der Divisionsoperation und ihrer Verwendung in OracleSQL eine der wesentlichen Fähigkeiten für Datenbankentwickler. In diesem Artikel werden die relevanten Kenntnisse über Divisionsoperationen in OracleSQL ausführlich erörtert und spezifische Codebeispiele als Referenz für die Leser bereitgestellt. 1. Divisionsoperation in OracleSQL

„Bitte nicht stören'-Modus funktioniert auf dem iPhone nicht: Behebung „Bitte nicht stören'-Modus funktioniert auf dem iPhone nicht: Behebung Apr 24, 2024 pm 04:50 PM

Selbst das Beantworten von Anrufen im Modus „Bitte nicht stören“ kann ein sehr lästiges Erlebnis sein. Wie der Name schon sagt, deaktiviert der Modus „Bitte nicht stören“ alle Benachrichtigungen über eingehende Anrufe und Warnungen von E-Mails, Nachrichten usw. Sie können diesen Lösungssätzen folgen, um das Problem zu beheben. Fix 1 – Fokusmodus aktivieren Aktivieren Sie den Fokusmodus auf Ihrem Telefon. Schritt 1 – Wischen Sie von oben nach unten, um auf das Kontrollzentrum zuzugreifen. Schritt 2 – Aktivieren Sie als Nächstes den „Fokusmodus“ auf Ihrem Telefon. Der Fokusmodus aktiviert den „Bitte nicht stören“-Modus auf Ihrem Telefon. Es werden keine Benachrichtigungen über eingehende Anrufe auf Ihrem Telefon angezeigt. Fix 2 – Fokusmodus-Einstellungen ändern Wenn es Probleme mit den Fokusmoduseinstellungen gibt, sollten Sie diese beheben. Schritt 1 – Öffnen Sie Ihr iPhone-Einstellungsfenster. Schritt 2 – Als nächstes schalten Sie die Fokusmodus-Einstellungen ein

Detaillierte Erläuterung der Rolle und Verwendung des PHP-Modulo-Operators Detaillierte Erläuterung der Rolle und Verwendung des PHP-Modulo-Operators Mar 19, 2024 pm 04:33 PM

Der Modulo-Operator (%) in PHP wird verwendet, um den Rest der Division zweier Zahlen zu ermitteln. In diesem Artikel werden wir die Rolle und Verwendung des Modulo-Operators im Detail besprechen und spezifische Codebeispiele bereitstellen, um den Lesern ein besseres Verständnis zu erleichtern. 1. Die Rolle des Modulo-Operators Wenn wir in der Mathematik eine ganze Zahl durch eine andere ganze Zahl dividieren, erhalten wir einen Quotienten und einen Rest. Wenn wir beispielsweise 10 durch 3 dividieren, ist der Quotient 3 und der Rest ist 1. Um diesen Rest zu ermitteln, wird der Modulo-Operator verwendet. 2. Verwendung des Modulo-Operators In PHP verwenden Sie das %-Symbol, um den Modul darzustellen

Detaillierte Erläuterung der Funktion system() des Linux-Systemaufrufs Detaillierte Erläuterung der Funktion system() des Linux-Systemaufrufs Feb 22, 2024 pm 08:21 PM

Detaillierte Erläuterung der Funktion system() des Linux-Systems Der Systemaufruf ist ein sehr wichtiger Teil des Linux-Betriebssystems. Er bietet eine Möglichkeit, mit dem Systemkernel zu interagieren. Unter diesen ist die Funktion system() eine der am häufigsten verwendeten Systemaufruffunktionen. In diesem Artikel wird die Verwendung der Funktion system() ausführlich vorgestellt und entsprechende Codebeispiele bereitgestellt. Grundlegende Konzepte von Systemaufrufen Systemaufrufe sind eine Möglichkeit für Benutzerprogramme, mit dem Betriebssystemkernel zu interagieren. Benutzerprogramme fordern das Betriebssystem an, indem sie Systemaufruffunktionen aufrufen

Detaillierte Erläuterung des Linux-Befehls „curl'. Detaillierte Erläuterung des Linux-Befehls „curl'. Feb 21, 2024 pm 10:33 PM

Detaillierte Erläuterung des Linux-Befehls „curl“ Zusammenfassung: Curl ist ein leistungsstarkes Befehlszeilentool für die Datenkommunikation mit dem Server. In diesem Artikel wird die grundlegende Verwendung des Curl-Befehls vorgestellt und tatsächliche Codebeispiele bereitgestellt, um den Lesern zu helfen, den Befehl besser zu verstehen und anzuwenden. 1. Was ist Locken? Curl ist ein Befehlszeilentool zum Senden und Empfangen verschiedener Netzwerkanfragen. Es unterstützt mehrere Protokolle wie HTTP, FTP, TELNET usw. und bietet umfangreiche Funktionen wie Datei-Upload, Datei-Download, Datenübertragung und Proxy

Sollte ich meinen Laptop jedes Mal herunterfahren? Sollte ich meinen Laptop jedes Mal herunterfahren? Feb 19, 2024 pm 12:09 PM

Windows-Laptops verfügen über Optionen für den Ruhezustand und das Herunterfahren. Wenn Sie Ihren Laptop in den Energiesparmodus versetzen, wechselt er in einen Energiesparmodus und Sie können so weiterarbeiten, wie Sie ihn verlassen haben. Wenn Sie Ihren Laptop herunterfahren, müssen Sie alle Programme und Ihre Arbeit schließen und von vorne beginnen. Wenn Sie den ganzen Tag über eine Pause von Ihrem Laptop einlegen möchten, ist der Schlafmodus oder Ruhezustand eine gute Option. Wie wäre es mit dem Schließen der Tür? Sollte ich meinen Laptop jedes Mal herunterfahren? Lass es uns herausfinden. Sollte ich meinen Laptop jedes Mal herunterfahren? Es kann sinnvoll sein, Ihren Laptop auszuschalten, um Energie zu sparen und die Lebensdauer des Geräts zu verlängern, insbesondere wenn es über einen längeren Zeitraum nicht verwendet wird. Tagsüber ist es jedoch eine gute Idee, Ihren Laptop in den Ruhemodus zu versetzen, um Ihre Aufgaben fortzusetzen

See all articles