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:
|
Dieses Mal werde ich über die Fähigkeiten zur Ent...
Methode join(): verbindet alle Elemente eines Arr...
Es gibt zwei Dateien a.htm und b.htm. Im selben Ve...
Beginnen Sie vorsichtig mit der Reinigung! Auflis...
1. Befehlseinführung Mit dem Datumsbefehl wird di...
Mindmap Er sieht wahrscheinlich so aus: Die meist...
Vorwort Kürzlich wurden Daten online falsch bearb...
1. Was ist ein Servlet 1.1. Erklären Sie in offiz...
Tipps zum Anzeigen von Verlaufsdatensätzen und Hi...
Inhaltsverzeichnis 1. Subroutensyntax 2. Beispiel...
Zweck der Verwendung von Nginx Lassen Sie uns zun...
Da ich das System häufig installiere, muss ich na...
Docker ist in CE und EE unterteilt. Die CE-Versio...
Hintergrundanforderungen: Mit zunehmender Größe d...
1. Befehl zum Löschen von Dateien: Suche das ents...