国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

javascript之中介者模式

LucasTwilight / 3273人閱讀

摘要:中介者模式中介者模式對(duì)象和對(duì)象之間借助第三方中介者進(jìn)行通信。將就用下這個(gè)這個(gè)函數(shù)充當(dāng)中介者挑戰(zhàn)成功挑戰(zhàn)失敗選手選手選手選手挑戰(zhàn)成功選手挑戰(zhàn)成功選手挑戰(zhàn)失敗在這段代碼中之間沒(méi)有直接發(fā)生關(guān)系而是通過(guò)另外的對(duì)象建立鏈接姑且將之當(dāng)成是中介者模式了。

中介者模式

中介者模式: 對(duì)象和對(duì)象之間借助第三方中介者進(jìn)行通信。


場(chǎng)景 demo
一場(chǎng)測(cè)試結(jié)束后, 公布結(jié)果: 告知解答出題目的人挑戰(zhàn)成功, 否則挑戰(zhàn)失敗。

    const player = function(name) {
      this.name = name
      playerMiddle.add(name)
    }
    player.prototype.win = function() {
      playerMiddle.win(this.name)
    }
    player.prototype.lose = function(){
      playerMiddle.lose(this.name)
    }
    const playerMiddle =(function(){ //將就用下這個(gè)demo, 這個(gè)函數(shù)充當(dāng)中介者
      const players =[]
      const winArr = []
      const loseArr = []
      return {
        add: function(name) {
          players.push(name)
        },
        win: function(name){
          winArr.push(name)
          if(winArr.length + loseArr.length === players.length){
            this.show()
          }
        },
        lose: function(name){
          loseArr.push(name)
          if(winArr.length + loseArr.length === players.length){
            this.show()
          }
        },
        show: function(){
          for(let winner of winArr){
            console.log(winner+"挑戰(zhàn)成功;")
          }
          for(let loser of loseArr){
            console.log(loser+"挑戰(zhàn)失敗;")
          }
        }
      }
    }())
    const a = new player("A選手")
    const b = new player("B選手")
    const c = new player("C選手")
    a.win()
    b.lose()
    c.win()
    // A 選手挑戰(zhàn)成功;
// B 選手挑戰(zhàn)成功;
// C 選手挑戰(zhàn)失敗;

在這段代碼中 A、B、C 之間沒(méi)有直接發(fā)生關(guān)系, 而是通過(guò)另外的 playerMiddle 對(duì)象建立鏈接, 姑且將之當(dāng)成是中介者模式了。

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

轉(zhuǎn)載請(qǐng)注明本文地址:http://specialneedsforspecialkids.com/yun/106757.html

相關(guān)文章

  • JavaScript設(shè)計(jì)模式發(fā)布-訂閱模式(觀察者模式)-Part2

    摘要:設(shè)計(jì)模式與開(kāi)發(fā)實(shí)踐讀書(shū)筆記。看此文章前,建議先看設(shè)計(jì)模式之發(fā)布訂閱模式觀察者模式在中,已經(jīng)介紹了什么是發(fā)布訂閱模式,同時(shí),也實(shí)現(xiàn)了發(fā)布訂閱模式。 《JavaScript設(shè)計(jì)模式與開(kāi)發(fā)實(shí)踐》讀書(shū)筆記。 看此文章前,建議先看JavaScript設(shè)計(jì)模式之發(fā)布-訂閱模式(觀察者模式)-Part1 在Part1中,已經(jīng)介紹了什么是發(fā)布-訂閱模式,同時(shí),也實(shí)現(xiàn)了發(fā)布-訂閱模式。但是,就Part1...

    Charlie_Jade 評(píng)論0 收藏0
  • JavaScript設(shè)計(jì)模式發(fā)布-訂閱模式(觀察者模式)-Part2

    摘要:設(shè)計(jì)模式與開(kāi)發(fā)實(shí)踐讀書(shū)筆記。看此文章前,建議先看設(shè)計(jì)模式之發(fā)布訂閱模式觀察者模式在中,已經(jīng)介紹了什么是發(fā)布訂閱模式,同時(shí),也實(shí)現(xiàn)了發(fā)布訂閱模式。 《JavaScript設(shè)計(jì)模式與開(kāi)發(fā)實(shí)踐》讀書(shū)筆記。 看此文章前,建議先看JavaScript設(shè)計(jì)模式之發(fā)布-訂閱模式(觀察者模式)-Part1 在Part1中,已經(jīng)介紹了什么是發(fā)布-訂閱模式,同時(shí),也實(shí)現(xiàn)了發(fā)布-訂閱模式。但是,就Part1...

    chemzqm 評(píng)論0 收藏0
  • 設(shè)計(jì)模式觀察者(發(fā)布/訂閱)模式

    摘要:發(fā)布訂閱模式又叫觀察者模式,它定義對(duì)象間的一種一對(duì)多的依賴關(guān)系。事件觀察者模式應(yīng)該是最常用的模式之一。總之,當(dāng)消息一發(fā)布,所有的訂閱者都會(huì)收到消息。發(fā)布訂閱模式還可以用來(lái)幫助實(shí)現(xiàn)一些別的設(shè)計(jì)模式,比如中介者模式。 發(fā)布/訂閱模式又叫觀察者模式,它定義對(duì)象間的一種一對(duì)多的依賴關(guān)系。當(dāng)一個(gè)對(duì)象的狀態(tài)(發(fā)布者)發(fā)生改變時(shí),所有依賴于它的對(duì)象都將得到通知。在 JavaScript 開(kāi)發(fā)中,我們...

    dreamGong 評(píng)論0 收藏0
  • 前端開(kāi)發(fā)中常用的javascript設(shè)計(jì)模式

    摘要:代理模式,迭代器模式,單例模式,裝飾者模式最少知識(shí)原則一個(gè)軟件實(shí)體應(yīng)當(dāng)盡可能少地與其他實(shí)體發(fā)生相互作用。迭代器模式可以將迭代的過(guò)程從業(yè)務(wù)邏輯中分離出來(lái),在使用迭代器模式之后,即不用關(guān)心對(duì)象內(nèi)部構(gòu)造也可以按順序訪問(wèn)其中的每個(gè)元素。 接手項(xiàng)目越來(lái)越復(fù)雜的時(shí)候,有時(shí)寫(xiě)完一段代碼,總感覺(jué)代碼還有優(yōu)化的空間,卻不知道從何處去下手。設(shè)計(jì)模式主要目的是提升代碼可擴(kuò)展性以及可閱讀性。 本文主要以例子的...

    趙春朋 評(píng)論0 收藏0

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

0條評(píng)論

閱讀需要支付1元查看
<