首页 > 代码库 > javascript设计模式之中介者模式
javascript设计模式之中介者模式
/* * 小游戏演示中介者模式 * Home 按键 1 * Guest 按键 0 * 半分钟内看谁按下的次数多 * * 参与的对象: * 玩家 * 计分板 * 中介者 * * 中介者模式使对象之间松耦合,提高了可维护性*/// 玩家var Player = function (name) { this.name = name; this.point = 0;};Player.prototype.play = function () { this.point += 1; mediator.played(); // 每次玩家按键,中介者更新计分板};// 计分板var scoreboard = { element: document.getElementById("result"), // 记录比分 update: function (score) { var msg = "", i; for (i in score) { if (score.hasOwnProperty(i)) { msg += ‘<p><strong>‘ + i + ‘</strong>: ‘ + score[i] + ‘</p>‘; } } this.element.innerHTML = msg; }};// 计分人(中介者)var mediator = { // 所有的玩家(player 对象) players: {}, // 玩家就位 setup: function () { var players = this.players; players.home = new Player("Home"); players.guest = new Player("Guest"); }, // 计分 played: function () { var players = this.players, score = { Home: players.home.point, Guest: players.guest.point }; scoreboard.update(score); }, // 游戏开始 keypress: function (e) { e = e || window.event; if (e.which === 49) { // 按键1 mediator.players.home.play(); return; } if (e.which === 48) { mediator.players.guest.play(); return; } }};// 运行游戏mediator.setup();window.onkeypress = mediator.keypress;// 游戏在30秒内结束setTimeout(function () { window.onkeypress = null; alert("Game Over!");}, 30000);
javascript设计模式之中介者模式
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。