Комбинированный режим: объедините группу объектов в структуру дерева, обрабатывайте комбинированный объект и объект листьев единым образом и игнорируйте различия между ними (потому что объект листьев также может содержать объекты листьев и стать комбинированным объектом). Объекты в комбинированном режиме могут быть только отношениями от одного ко многим, и никто не может произойти.
Основная единица: комбинированный объект содержит несколько объектов листьев. Каждый базовый блок может быть листовым объектом другого комбинированного объекта. Папка или файл также могут быть содержанием других папок, но папка или файл не могут принадлежать к нескольким превосходным папкам одновременно.
При реализации комбинированного режима в JavaScript, чтобы убедиться, что комбинированный объект и объект LEAF имеют одинаковый метод интерфейса, операции одной и той же группы объектов листьев должны быть последовательными.
пример:
// Определить комбинированный объект 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 (file);} else {console.log ('/'+file.name+'/' уже существует, добавить сбой ');}}; folder.prototype.scan = function () {if (this.parent) {console.log (' start scan/'+this.parent.name+': '+this.name);} else {console.log (' Start Scanning root Directory: '+this.name);} // Ключ здесь, вызовите метод интерфейса всех его объектов листа () для (var i = 0, file; file = this.files [i ++];) {file.scan ();}}; this.files.indexof (file); if (n === -1) {console.log ('не может удалить: /'''+file.name+'/' 'не существует:');} if (n> = 0) {this.files.splice (n, 1); console.log ('успешно удалил:'+file.name); {this.name = name; this.parent = null;}; file.prototype.add = function () {console.log ('не может быть добавлено ниже файла');}; file.prototype.scan = function () {console.log (this.parent.name+':'+name); {console.log ('нельзя удалить:/''+file.name+'/'do не существует: ');}; // test var folder = new Folder (' Directory '); var folder1 = new Folder (' Material '); var folder2 = new Fother (' Javascript '); var file1 = new File (' node.js '); File ('qq.jpg'); folder.add (folder1); folder.add (folder1); folder.add (folder2); folder1.add (file1); folder2.add (file2); // «Учебный материал» добавлен успешно // '' Учебный материал 'уже существует, но не удалось добавить //' Javascript 'Успешный //' node. успешно // 'QQ.JPG' Успешно добавлено. // Это эквивалентно выполнению команды макроса // Запуск сканирования корневого каталога: каталог // Начать сканирование «каталога»: javascript // javascript: qq.jpgВыше приведено режим комбинации JavaScript, введенный редактором. Я надеюсь, что это будет полезно для всех. Если у вас есть какие -либо вопросы, пожалуйста, оставьте мне сообщение, и редактор ответит всем вовремя. Большое спасибо за вашу поддержку сайту wulin.com!