中介者模式
该模式会缓解对象之间的耦合度,将紧耦合转换成松耦合
代码示例,实现一个键盘游戏,有两个玩家。规定一个人按‘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 += ...
}
}
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){
mediator.players.home.play();
return;
}
if(e.which === 48){
mediator.players.guest.play();
return;
}
}
};
Mediator.step();
Window.onkeypress = mediator.keypress;
setTimeout(function () {
window.onkeypress = null;
alert('Game Over');
},30000);