JavaScript設計模式之中介模式

中介者模式

該模式會緩解對象之間的耦合度,將緊耦合轉換成鬆耦合

代碼示例,實現一個鍵盤遊戲,有兩個玩家。規定一個人按‘1’,一個人按‘0’。

//玩家對象
function Player (name) {
    this.points = 0;
    this.name = name;
}
Player.prototype.play = function () {
    this.points += 1;
    mediator.played();//調用中介者的方法
}

//計分板對象
scoreBoard = {
    element: document.getElementById('result'),
    update: function (score) {
        var I,msg = '';

        for(I in score){  
            if(score.hasOwnProperty(i)){  
              //對msg顯示字符串的處理
              msg += ...
            }
        }
        this.element.innerHtml = msg;
    }
};
//中介者對象
var mediator = {
    //包含通信雙方的對象
    players: {},
    //初始化
    step: function () {
        //創建兩個玩家
        var players = this.players;
        players.home = new PLayer('Home');
        players.guest = new PLayer('Guest');
    },
    played: function () {  
      var players = this.players;

      var score = {
          Home: players.home.points,
          Guest: players.guest.points,
      };

      mediator.update(score);
    },
    keypress: function (e) {  
      e = e || window.event;
      if(e.which === 49){  //按鍵‘1’
          mediator.players.home.play();
          return;
        }
        if(e.which === 48){  //按鍵‘0’
          mediator.players.guest.play();
          return;
        }
    }
};

//建立和拆除遊戲
Mediator.step();
Window.onkeypress = mediator.keypress;//監聽鍵盤事件

//在30秒內結束遊戲
setTimeout(function () {
    window.onkeypress = null;
    alert('Game Over');
},30000);
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章