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:
|
Vorschau auf die überarbeitete Fassung Dieser Art...
DTD ist ein Satz grammatikalischer Regeln zur Ausz...
Inhaltsverzeichnis Vorwort Installieren des Grafi...
1. Herunterladen 2. Dekompression 3. Fügen Sie di...
Die Konfigurationssyntax von Nginx ist flexibel u...
Inhaltsverzeichnis Vermeiden Sie sich wiederholen...
Ich habe das System vor einiger Zeit neu installi...
Dieser Artikel gibt Ihnen den spezifischen Code v...
Nehmen Sie für eine neu erstellte Website ASP.NET...
1. Hintergrund Bei unserer täglichen Website-Wart...
Bei meinen letzten Studien habe ich einige Layout...
Standardmäßig generiert die MyISAM-Tabelle drei D...
Häufig gestellte Fragen zu benutzerdefinierten Bi...
Vorwort Im Internet gibt es zahlreiche Informatio...
Wenn Sie Informationen von Ihren Benutzern sammel...