javascript之中介者模式

中介者模式

中介者模式: 對象和對象之間藉助第三方中介者進行通訊。函數

clipboard.png
場景 demo
一場測試結束後, 公佈結果: 告知解答出題目的人挑戰成功, 不然挑戰失敗。測試

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(){ //將就用下這個demo, 這個函數充當中介者
      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+'挑戰成功;')
          }
          for(let loser of loseArr){
            console.log(loser+'挑戰失敗;')
          }
        }
      }
    }())
    const a = new player('A選手')
    const b = new player('B選手')
    const c = new player('C選手')
    a.win()
    b.lose()
    c.win()
    // A 選手挑戰成功;
// B 選手挑戰成功;
// C 選手挑戰失敗;

在這段代碼中 A、B、C 之間沒有直接發生關係, 而是經過另外的 playerMiddle 對象創建連接, 姑且將之當成是中介者模式了。this

相關文章
相關標籤/搜索