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设计模式之中介者模式的更多相关文章
- 再起航,我的学习笔记之JavaScript设计模式23(中介者模式)
中介者模式 概念介绍 中介者模式(Mediator):通过中介者对象封装一系列对象之间的交互,使对象之间不再相互引用降低他们之间的耦合,有时中介者对象也可以改变对象之间的交互. 创建一个中介 中介者模 ...
- 学习javascript设计模式之中介者模式
1.中介者模式的作用就是解除对象与对象之间的紧耦合关系.增加一个中介者对象后,所有的相关对象都通过中介者来通信,而不是互相引用,所以当一个对象发生改变时,只需要通知中介对象即可.中介者使各对象之间耦合 ...
- javaScript 设计模式之中介者模式示例
飞机把注册信息放到铁塔里,发送数据到铁塔,报告其它的飞机一些信息. var feiji = function( name ){ this.name = name; } feiji.prototype. ...
- 乐在其中设计模式(C#) - 中介者模式(Mediator Pattern)
原文:乐在其中设计模式(C#) - 中介者模式(Mediator Pattern) [索引页][源码下载] 乐在其中设计模式(C#) - 中介者模式(Mediator Pattern) 作者:weba ...
- 折腾Java设计模式之中介者模式
博文原址:折腾Java设计模式之中介者模式 中介者模式 中介者模式(Mediator Pattern)是用来降低多个对象和类之间的通信复杂性.这种模式提供了一个中介类,该类通常处理不同类之间的通信,并 ...
- [转] JavaScript设计模式之发布-订阅模式(观察者模式)-Part1
<JavaScript设计模式与开发实践>读书笔记. 发布-订阅模式又叫观察者模式,它定义了对象之间的一种一对多的依赖关系.当一个对象的状态发生改变时,所有依赖它的对象都将得到通知. 例如 ...
- js设计模式——8.中介者模式
js设计模式——8.中介者模式 /*js设计模式——中介者模式*/ class A { constructor() { this.number = 0; } setNumber(num, m) { t ...
- javascript设计模式--策略模式
javascript策略模式总结 1.什么是策略模式? 策略模式的定义是:定义一系列的算法,把他们独立封装起来,并且可以相互替换. 例如我们需要写一段代码来计算员工的奖金.当绩效为a时,奖金为工资的5 ...
- JavaScript 设计模式: 发布者-订阅者模式
JavaScript 设计模式: 发布者-订阅者模式 发布者-订阅者模式 https://github.com/Kelichao/javascript.basics/issues/22 https:/ ...
随机推荐
- 13、ubuntu终端快捷键(参考 dy9776)
1.终端的快捷键 Tab 自动补全 Ctrl+a 光标移动到开始位置 Ctrl+e 光标移动到最末尾 Ctrl+l 相当于clear,即清屏 Ctrl+Z 把当前任务放到后台运行(相当于运行命令时后面 ...
- linux命令-stty
一.用途: stty——改变和打印终端行设置 二.参数: 1.打印终端行设置 -a,--all 以人可读的方式打印所有当前设置:-a参数比单独的stty命令输出的终端信息更详细 -g,--save ...
- Entity Framework Code-First(9):DataAnnotations
DataAnnotations in Code-First: EF Code-First provides a set of DataAnnotation attributes, which you ...
- Python短小精悍的Orator基本使用技巧
基本使用 配置 设置数据库配置参数,创建一个DatabaseManager实例. from orator import DatabaseManager config = { 'mysql': { 'd ...
- vivado中如何调用chipscope或者impact
vivado中并没有集成chipscope和impact,所以需要安装ISE,安装完ISE后进行以下操作: 1) 选择环境变量中的系统变量,新建以下变量 XILINX ...
- 【linux-command not find解决方法 】
在linux下我们经常输入某些命令时经常出现提示说:command not find 首先 当出现 command not find时肯定是环境变量的问题,所以得修改环境变量.下面我也引用一下其他牛人 ...
- PureUI(扩展版本)
喜欢一个UI(pure,官网)不怎么更新(可能官方认为不需要更新).我自己做了扩展和修正,整个库下载地址:http://files.cnblogs.com/files/RainbowInTheSky/ ...
- 利用表达式树Expression优化反射性能
最近做了一个.Net Core环境下,基于NPOI的Excel导入导出以及Word操作的服务封装,涉及到大量反射操作,在性能优化过程中使用到了表达式树,记录一下. Excel导入是相对比较麻烦的一块, ...
- libguestfs知识点
libguestfs 是一组 Linux 下的 C 语言的 API ,用来访问虚拟机的磁盘映像文件.其项目主页是http://libguestfs.org/ , 该工具包内包含的工具有virt-cat ...
- laravel 导出插件
转发:https://blog.csdn.net/gu_wen_jie/article/details/79296470 版本:laravel5 php 5.6 安装步骤: 一.安装插件 ①.首先在L ...