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:
|
Grafisches Tutorial zur Installation und Konfigur...
Inhaltsverzeichnis 1. Ich habe das Root-Passwort ...
1. Embed ist illegal Das <embed>-Tag ist ein...
Inhaltsverzeichnis 1. Startverwaltung des Quellpa...
Inhaltsverzeichnis Klassenkomponente Funktionale ...
Vorwort Im WeChat-Applet können Sie globalData vo...
brauchen: Implementieren Sie die dynamische Anzei...
Vorwort Nach der Installation von MySQL und Navic...
Die GtkTreeView-Komponente ist eine erweiterte Ko...
Inhaltsverzeichnis 1. Grundlagen 2. Problembeschr...
SQL UNIQUE-Einschränkung Die UNIQUE-Einschränkung...
Durch die Verwendung des prozentualen Padding-Top...
In diesem Artikelbeispiel wird der spezifische Co...
Inhaltsverzeichnis Problemanalyse Warum Kapselung...
Was ist WSL Zitat aus der Baidu-Enzyklopädie: Das...