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);
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值