Was ist das Beobachtermuster?
Szenariosimulation
Code-Implementierung//Beobachter-Entwurfsmuster //Herausgeber-->Händler var shopObj = {}; //Produktliste [Schlüssel:[]], Schlüssel ist der Produktname shopObj.list = []; //Abonnementmethode shopObj.listen = Funktion (Schlüssel, fn) { // Schlüssel ist das Produktmodell, fn ist das Abonnementverhalten if (!this.list[Schlüssel]) { diese.liste[Schlüssel] = []; } this.list[key].push(fn); //Fügen Sie der Produktliste ein Abonnement mit dem Produktnamenschlüssel hinzu} //Nachricht veröffentlichen Methode shopObj.publish = function (key) { //var key = arguments[0]; //Wenn Sie den Parameter key nicht übergeben, können Sie auch Folgendes tun: var fns = this.list[key]; // für (var i = 0; i < fns.length; i++) { für(var i = 0 ,fn; fn = fns[i++];){ //Führen Sie die abonnierte Funktion fn argumentmnts aus, um alle Argumente zu speichern // var fn = fns[i++]; fn.apply(diese, Argumente) } } // Benutzer A fügt ein Abonnement hinzushopObj.listen("Huawei", function (brand, model) { console.log("Benutzer A hat erhalten: " + Marke + Modell + "Der Preis des Mobiltelefons wurde reduziert"); }) // Benutzer B fügt Abonnement hinzu shopObj.listen("Huawei", function (brand, model) { console.log("Benutzer B hat erhalten: " + Marke + Modell + "Der Preis des Mobiltelefons wurde reduziert"); }) //c Benutzer fügt Abonnement hinzushopObj.listen("Abonnement", function (Marke, Modell) { console.log("Benutzer C hat erhalten: " + Marke + Modell + "Der Preis des Mobiltelefons wurde reduziert"); }) //Double 11-Händler veröffentlichen Informationen zu Huaweis PreissenkungenshopObj.publish("Huawei", "p30"); shopObj.publish("Shop", "Mix4"); Refactoring des Codes//Beobachter-Entwurfsmuster var Eevent = { //Produktliste [Schlüssel:[]], Schlüssel ist der Produktname Liste: [], //Abonnementmethode listen: function (key, fn) { // key ist das Produktmodell, fn ist das Abonnementverhalten if (!this.list[key]) { diese.liste[Schlüssel] = []; } diese.Liste[Taste].push(fn); }, //Nachricht veröffentlichen Methode publish: function (key) { //var key = arguments[0]; //Wenn Sie den Parameter key nicht übergeben, können Sie auch Folgendes tun: var fns = this.list[key]; // für (var i = 0; i < fns.length; i++) { für (var i = 0, fn; fn = fns[i++];) { //Führen Sie die abonnierte Funktion fn argumentmnts aus, um alle Argumente zu speichern // var fn = fns[i++]; fn.apply(diese, Argumente) } } } //Initialisierung des Observer-Objekts var initEvent = function (obj) { für (var i in Eevent) { obj[i] = Ereignis[i]; } } //Herausgeber->Händler var shopObj = {}; initEvent(shopObj); // Benutzer A fügt ein Abonnement hinzushopObj.listen("Huawei", function (brand, model) { console.log("Benutzer A hat erhalten: " + Marke + Modell + "Der Preis des Mobiltelefons wurde reduziert"); }) // Benutzer B fügt Abonnement hinzu shopObj.listen("Huawei", function (brand, model) { console.log("Benutzer B hat erhalten: " + Marke + Modell + "Der Preis des Mobiltelefons wurde reduziert"); }) //c Benutzer fügt Abonnement hinzushopObj.listen("Abonnement", function (Marke, Modell) { console.log("Benutzer C hat erhalten: " + Marke + Modell + "Der Preis des Mobiltelefons wurde reduziert"); }) //Double 11-Händler veröffentlichen Informationen zu Huaweis PreissenkungenshopObj.publish("Huawei", "p30"); shopObj.publish("Shop", "Mix4"); ZusammenfassenDieser Artikel endet hier. Ich hoffe, er kann Ihnen helfen. Ich hoffe auch, dass Sie mehr Inhalt auf 123WORDPRESS.COM lesen können! Das könnte Sie auch interessieren:
|
1. Warum maxPostSize festlegen? Der Tomcat-Contai...
Vorwort Im Grunde verwenden Programmierer am Arbe...
Nachdem Sie Docker auf dem Linux-Server installie...
Inhaltsverzeichnis 1. Übersicht über Docker Consu...
Bei der Installation von Puppeteer unter Linux kö...
Um mehrere Sites auf einem Server bereitzustellen...
Teil.0 Hintergrund Die Intranetserver des Unterne...
Was ist die Nginx-Zugriffsbeschränkungskonfigurat...
Bei der Onlinesuche nach Methoden zur Installatio...
In diesem Artikel finden Sie das Installations- u...
Ich habe vor Kurzem etwas über Stapelkontexte gel...
1. Clustered-Index Tabellendaten werden in der Re...
Während der Verwendung von MySQL wurde festgestel...
1. Wie MySQL Indizes verwendet Indizes werden ver...
Die Offline-Installationsmethode von MySQL_8.0.2 ...