国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > JavaScript > 正文

JavaScript組合模式學(xué)習(xí)要點

2019-11-20 09:08:42
字體:
供稿:網(wǎng)友

組合模式:將一組對象組合成樹形結(jié)構(gòu),并統(tǒng)一對待組合對象和葉對象,忽略它們之間的不同(因為葉對象也可以也可以包含葉對象而成為組合對象),組合模式中的對象只能是一對多的關(guān)系,不能出現(xiàn)多對一。

基本單元:一個組合對象包含多個葉對象。每個基本單元又可以是別的組合對象的葉對象類似文件夾與它里面的內(nèi)容的關(guān)系網(wǎng),一個文件夾或文件又可以是其它文件夾的內(nèi)容,但一個文件夾或文件不能同時屬于多個上級文件夾。

在JavaScript中實現(xiàn)組合模式時,要保證組合對象和葉對象擁有相同的接口方法,對同一組葉對象的操作必須具有一致性。

例子:

//定義組合對象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('開始掃描/''+this.parent.name+'/': '+this.name);}else{console.log('開始掃描根目錄: '+this.name);}//關(guān)鍵在這里,調(diào)用所有它的葉對象的接口方法scan()for(var i = 0, file; file = this.files[i++];){file.scan();}};Folder.prototype.remove = function (file) {var n = this.files.indexOf(file);if(n === -1){console.log('無法刪除: /''+file.name+'/'不存在:');}if(n >= 0){this.files.splice(n,1);console.log('成功刪除:'+file.name);}};//定義葉對象var File = function (name) {this.name = name;this.parent = null;};File.prototype.add = function () {console.log('不能添加在文件下面');};File.prototype.scan = function () {console.log(this.parent.name+': '+this.name);};File.prototype.remove = function (file) {console.log('無法刪除: /''+file.name+'/'不存在:');};//測試var folder = new Folder('目錄');var folder1 = new Folder('學(xué)習(xí)質(zhì)料');var folder2 = new Folder('javascript');var file1 = new File('Node.js');var file2 = new File('qq.jpg');folder.add(folder1);folder.add(folder1);folder.add(folder2);folder1.add(file1);folder2.add(file2);//'學(xué)習(xí)質(zhì)料'添加成功//'學(xué)習(xí)質(zhì)料'已存在,添加失敗//'javascript'添加成功//'Node.js'添加成功//'qq.jpg'添加成功folder.remove(folder1);folder.remove(folder1);file1.remove(file1);//成功刪除:學(xué)習(xí)質(zhì)料//無法刪除: '學(xué)習(xí)質(zhì)料'不存在://無法刪除: 'Node.js'不存在:folder.scan(); //這里相當(dāng)于執(zhí)行了一個宏命令//開始掃描根目錄: 目錄//開始掃描'目錄': javascript//javascript: qq.jpg

以上所述是小編給大家介紹的JavaScript組合模式,希望對大家有所幫助,如果大家有任何疑問請給我留言,小編會及時回復(fù)大家的。在此也非常感謝大家對武林網(wǎng)網(wǎng)站的支持!

發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
主站蜘蛛池模板: 镇沅| 九台市| 海伦市| 清河县| 兰坪| 兴海县| 佛冈县| 横山县| 静安区| 法库县| 洪洞县| 阿拉善右旗| 石阡县| 林周县| 米易县| 宣恩县| 杭州市| 油尖旺区| 宁强县| 宁陕县| 沂南县| 油尖旺区| 萍乡市| 沾化县| 聂拉木县| 西吉县| 镶黄旗| 上杭县| 磐安县| 泰和县| 临泉县| 泸州市| 葫芦岛市| 高台县| 丹寨县| 新乡县| 黔西县| 江门市| 上虞市| 平罗县| 霍城县|