成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

javascript 組合模式

Carson / 772人閱讀

摘要:開始掃描文件夾文件下不能添加其他文件夾或文件開始掃描文件根文件加技術(shù)棧權(quán)威小王子

組合模式

**// 組合模式在對象間形成樹形結(jié)構(gòu)
// 組合模式中基本對象和組合對象被一致對待
// 無須關(guān)心對象有多少層 調(diào)用時(shí)只需要在根部進(jìn)行調(diào)用**
結(jié)合了命令模式和組合模式的具體實(shí)現(xiàn):

    const MacroCommand = function () {
      return {
        lists: [],
        add: function (task) {
          this.lists.push(task)
        },
        excute: function () { //組合對象調(diào)用這里的excute
          for (let i = 0; i < this.lists.length; i++) {
            this.lists[i].excute()
          }
        }
      }
    }
    const command1 = MacroCommand() //基本對象
    command1.add({
      excute: () => console.log("煮咖啡") //基本對象調(diào)用這里的excute
    })
    const command2 = MacroCommand()
    command2.add({
      excute: () => console.log("打開電視")
    })
    command2.add({
      excute: () => console.log("打開音響")
    })
    const command3 = MacroCommand()
    command3.add({
      excute: () => console.log("打開空調(diào)")
    })
    command3.add({
      excute: () => console.log("打開電腦")
    })
    console.log(command1.lists) //所對應(yīng)的內(nèi)存地址不一樣
    console.log(command2.lists) //所以lists 保存的不一樣
    console.log(command3.lists)

    const macroCommand = MacroCommand()
    macroCommand.add(command2) //分次放入不同的參數(shù)
    macroCommand.add(command3) // 函數(shù)的引用不變,對應(yīng)的就是同 
                                 //一個(gè)堆
     macroCommand.add(command1)
     //最后把command1、2、3都放入數(shù)組中 調(diào)用excute,觸發(fā)每一個(gè)數(shù) 
      //組中的excute方法
    macroCommand.excute()

demo2 —— 掃描文件夾
掃描文件夾時(shí), 文件夾下面可以為另一個(gè)文件夾也可以為文件, 我們希望統(tǒng)一對待這些文件夾和文件, 這種情形適合使用組合模式。

   const Folder = function(folder){
    this.folder = folder
    this.lists = []
   }
   Folder.prototype.add = function(resource){
     this.lists.push(resource)
   }
   Folder.prototype.scan = function(){
     console.log("開始掃描文件夾",this.folder)
     for(let i =0,folder; folder = this.lists[i++];){
       folder.scan()
     }
   }
   const File = function(file){
     this.file = file
   }
   File.prototype.add = function(){
     throw Error("文件下不能添加其他文件夾或文件")
   }
   File.prototype.scan = function(){
     console.log("開始掃描文件",this.file)
   }
   const folder = new Folder("根文件加")
   const folder1 = new Folder("JS")
   const folder2 = new Folder("life")
   const file1 = new File("js技術(shù)棧")
   const file2 = new File("權(quán)威")
   const file3 = new File("小王子")
   folder1.add(file1)
   folder1.add(file2)
   folder2.add(file3)
   folder.add(folder1)
   folder.add(folder2)
   folder.scan()

文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請注明本文地址:http://systransis.cn/yun/106641.html

相關(guān)文章

  • 聽飛狐聊JavaScript設(shè)計(jì)模式系列12

    摘要:,對組合對象執(zhí)行的操作可以向下傳遞到葉子節(jié)點(diǎn)進(jìn)行操作。組合模式之圖片庫圖片庫可以有選擇地隱藏或顯示圖片庫的全部或某一部分單獨(dú)的或是部分的。 本回內(nèi)容介紹 上一回,聊了橋接模式,做了一道計(jì)算題;介一回,聊組合模式(Composite),官方描述組合模式將對象組合成樹形結(jié)構(gòu)以表示部分-整體的層次結(jié)構(gòu),組合模式使得用戶對單個(gè)對象和組合對象的使用具有一致性。 組合模式特性 這里我理了一下,就組...

    HitenDev 評論0 收藏0
  • JavaScript設(shè)計(jì)模式-第一部分:單例模式、組合模式和外觀模式

    摘要:但是,這并不是采用單例的唯一原因。使用命名空間單例模式也被稱為模塊設(shè)計(jì)模式。函數(shù)內(nèi)部聲明了一些局部函數(shù)和或變量。緊隨函數(shù)聲明放置即可立即執(zhí)行外部函數(shù),并將所得的對象文字費(fèi)賠給變量。 JavaScript設(shè)計(jì)模式-第一部分:單例模式、組合模式和外觀模式 設(shè)計(jì)模式是一些可靠的編程方式,有助于保證代碼更加易于維護(hù)、擴(kuò)展及分離,所有設(shè)計(jì)模式在創(chuàng)建大型JavaScript應(yīng)用程序時(shí)均不可或缺 單...

    betacat 評論0 收藏0
  • JavaScript設(shè)計(jì)模式(八):組合模式

    摘要:不同于其它靜態(tài)編程語言,實(shí)現(xiàn)組合模式的難點(diǎn)是保持樹對象與葉對象之間接口保持統(tǒng)一,可借助定制接口規(guī)范,實(shí)現(xiàn)類型約束。誤區(qū)規(guī)避組合不是繼承,樹葉對象并不是父子對象組合模式的樹型結(jié)構(gòu)是一種聚合的關(guān)系,而不是。 showImg(https://segmentfault.com/img/bVbu79V?w=800&h=600); 組合模式:又叫 部分整體 模式,將對象組合成樹形結(jié)構(gòu),以表示 部分...

    leon 評論0 收藏0
  • js設(shè)計(jì)模式--組合模式

    摘要:文章系列設(shè)計(jì)模式單例模式設(shè)計(jì)模式策略模式設(shè)計(jì)模式代理模式設(shè)計(jì)模式迭代器模式設(shè)計(jì)模式發(fā)布訂閱模式設(shè)計(jì)模式命令模式概念組合模式就是用小的子對象來構(gòu)建更大的對象,而這些小的子對象本身也許是由更小的孫對象構(gòu)成的。 前言 本系列文章主要根據(jù)《JavaScript設(shè)計(jì)模式與開發(fā)實(shí)踐》整理而來,其中會(huì)加入了一些自己的思考。希望對大家有所幫助。 文章系列 js設(shè)計(jì)模式--單例模式 js設(shè)計(jì)模式--策略...

    blankyao 評論0 收藏0
  • JavaScript繼承模式

    摘要:組合繼承組合繼承有時(shí)也叫偽經(jīng)典繼承,該繼承模式將原型鏈和借用構(gòu)造函數(shù)的技術(shù)結(jié)合在一起實(shí)現(xiàn)。寄生組合式繼承通過借用構(gòu)造函數(shù)來繼承屬性,通過原型鏈的混成形式來繼承方法。 原文地址:JavaScript實(shí)現(xiàn)繼承 眾所周知,JavaScript 這門語言在 ES6 出來之前是沒有類(class)這一概念的,所以 JavaScript 中的類都是通過原型鏈來實(shí)現(xiàn)的。同樣,使用 JavaScrip...

    DrizzleX 評論0 收藏0

發(fā)表評論

0條評論

閱讀需要支付1元查看
<