亚洲中字慕日产2020,大陆极品少妇内射AAAAAA,无码av大香线蕉伊人久久,久久精品国产亚洲av麻豆网站

資訊專欄INFORMATION COLUMN

javascript 組合模式

Carson / 791人閱讀

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

組合模式

**// 組合模式在對(duì)象間形成樹形結(jié)構(gòu)
// 組合模式中基本對(duì)象和組合對(duì)象被一致對(duì)待
// 無(wú)須關(guān)心對(duì)象有多少層 調(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 () { //組合對(duì)象調(diào)用這里的excute
          for (let i = 0; i < this.lists.length; i++) {
            this.lists[i].excute()
          }
        }
      }
    }
    const command1 = MacroCommand() //基本對(duì)象
    command1.add({
      excute: () => console.log("煮咖啡") //基本對(duì)象調(diào)用這里的excute
    })
    const command2 = MacroCommand()
    command2.add({
      excute: () => console.log("打開(kāi)電視")
    })
    command2.add({
      excute: () => console.log("打開(kāi)音響")
    })
    const command3 = MacroCommand()
    command3.add({
      excute: () => console.log("打開(kāi)空調(diào)")
    })
    command3.add({
      excute: () => console.log("打開(kāi)電腦")
    })
    console.log(command1.lists) //所對(duì)應(yīng)的內(nèi)存地址不一樣
    console.log(command2.lists) //所以lists 保存的不一樣
    console.log(command3.lists)

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

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

   const Folder = function(folder){
    this.folder = folder
    this.lists = []
   }
   Folder.prototype.add = function(resource){
     this.lists.push(resource)
   }
   Folder.prototype.scan = function(){
     console.log("開(kāi)始掃描文件夾",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("開(kāi)始掃描文件",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)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://www.ezyhdfw.cn/yun/106641.html

相關(guān)文章

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

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

    HitenDev 評(píng)論0 收藏0
  • JavaScript設(shè)計(jì)模式-第一部分:?jiǎn)卫?em>模式、組合模式和外觀模式

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

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

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

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

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

    blankyao 評(píng)論0 收藏0
  • JavaScript繼承模式

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

    DrizzleX 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

閱讀需要支付1元查看
<