Detaillierte Erläuterung des js-Chain-of-Responsibility-Modells
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.
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);
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!

Heiße KI -Werkzeuge

Undresser.AI Undress
KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover
Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool
Ausziehbilder kostenlos

Clothoff.io
KI-Kleiderentferner

AI Hentai Generator
Erstellen Sie kostenlos Ai Hentai.

Heißer Artikel

Heiße Werkzeuge

Notepad++7.3.1
Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version
Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1
Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6
Visuelle Webentwicklungstools

SublimeText3 Mac-Version
Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Heiße Themen



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

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 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

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

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-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“ 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

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
