Kombinationsmodus: Kombinieren Sie eine Gruppe von Objekten in eine Baumstruktur, behandeln Sie das kombinierte Objekt und das Blattobjekt einheitlich und ignorieren Sie die Unterschiede zwischen ihnen (da das Blattobjekt auch Blattobjekte enthalten und ein kombiniertes Objekt werden kann). Die Objekte im Kombinationsmodus können nur eine Eins-zu-Viele-Beziehung sein, und es kann kein Vielfaches auftreten.
Grundeinheit: Ein kombiniertes Objekt enthält mehrere Blattobjekte. Jede Grundeinheit kann ein Blattobjekt eines anderen Kombinationsobjekts sein. Ein Ordner oder eine Datei kann auch der Inhalt anderer Ordner sein, aber ein Ordner oder eine Datei kann nicht gleichzeitig zu mehreren überlegenen Ordnern gehören.
Bei der Implementierung des Kombinationsmodus in JavaScript, um sicherzustellen, dass das kombinierte Objekt und das Blattobjekt die gleiche Schnittstellenmethode haben, müssen die Operationen derselben Gruppe von Blattobjekten konsistent sein.
Beispiel:
//Define the combined object var Folder = function (name) {this.name = name;this.parent = null;this.files = [];};Folder.prototype.add = function (file) {file.parent = this;if(this.files.indexOf(file) === -1) {this.files.push (Datei);} else {console.log ('/'+file.name+'/' existiert bereits fehlgeschlagen ');}}; order.prototype.scan = function () {if (this.parent) {console.log (' starten scan/' '+this.name);} else {console.log (' starten Sie das Root -Verzeichnis: '+this.name);} // Der Schlüssel ist hier, rufen Sie die Schnittstellenmethode aller Blattobjekte scan () für (var i = 0, file; file = this.file [i ++];) {) ()} oper.protototy. -file () ()} oper.prototototy.scan (). this.files.indexof (Datei); if (n === -1) {console.log ('kann nicht löschen: /'''Sfile.name+'/' nicht existiert: ');} if (n> = 0) {this.Sliles.Ssplice (n, 1); console.log (' field deleted: '+agan.name); {this.name = name; this.parent = null;}; file.prototype.add = function () {console.log ('kann nicht unter der Datei hinzugefügt werden');}; Datei.Prototype.scan = function () {console.log (this.parent.name+'(’(name). oder File ('qq.jpg'); order.add (order1); order.add (order1); order.add (order2); order1.add (file1); order2.add (Datei2); // 'Lernmaterial' Lernmaterial 'hinzugefügt' hinzugefügt // 'Lernmaterial', das bereits erfolgreich hinzugefügt wurde. erfolgreich // 'qq.jpg' erfolgreich fold.remove (order1); order.remove (order1); file1.remove (Datei1); // erfolgreich gelöscht: Lernmaterial // kann nicht löschen: 'Lernmaterial' nicht existieren: // nicht in der Lage zu löschen: 'node.js. // Dies entspricht der Ausführung eines Makro -Befehls // SCOWN DAS REOT -Verzeichnis: Verzeichnis // StartenDas obige ist der vom Editor eingeführte JavaScript -Kombinationsmodus. Ich hoffe, es wird für alle hilfreich sein. Wenn Sie Fragen haben, hinterlassen Sie mir bitte eine Nachricht und der Editor wird allen rechtzeitig antworten. Vielen Dank für Ihre Unterstützung auf der Wulin.com -Website!