首页 > 其他 > 详细

监听者模式

时间:2017-11-04 18:56:19      阅读:289      评论:0      收藏:0      [点我收藏+]

在函数里传回调函数,可以实现在特定的条件下执行想要的功能,但是缺点是什么呢?如果你要在特定条件下执行很多的功能,咋办呢?再次调用函数,然后回调?太啰嗦;

这里说的监听者模式呢,其实也是一种思想,用大白话比喻呢就是:比如说有一个人比赛得了冠军(也可以是亚军,233),然后嘞,有三个人分别想做三件事,但是,这三件事只有当前面那个人拿了冠军,这三件事才会被做;那么,怎么办呢?

用监听者模式的思想来解决这件事:先定义两个方法,一个方法用来将三个人想做的事push进一个定义好的数组里面;另一个方法,遍历数组,执行数组里的方法;

(其实我是自己明白的,就怕表达不清楚~)

写一个简单的应用,代码如下:

 1 //定义一个person对象
 2         let person = {
 3             listens : [],
 4 
 5             //将需要特定时机触发的函数push进listens数组里
 6             //调用下边的executeListener函数就可以触发
 7             addListener : function(fn){
 8                 this.listens.push(fn);
 9             },
10 
11             //在特定条件下调用函数,执行listens里面的函数
12             executeListener : function() {
13                 this.listens.forEach(function(ele){
14                     ele();
15                 });
16             }
17         };
18 
19         //分别将要做的事情push进数组里面,等拿了冠军,一起调用
20         person.addListener(function(){
21             console.log(‘恭喜你,拿了冠军‘);
22         });
23         person.addListener(function(){
24             console.log(‘拿了冠军,送给你一束鲜花‘);
25         });
26         person.addListener(function(){
27             console.log(‘得了冠军,回家请你饱餐一顿‘);
28         });
29 
30         
31         //拿了冠军了,好,执行那三件事吧~
32         if(‘拿了冠军‘){
33             person.executeListener();
34         }

 

监听者模式

原文:http://www.cnblogs.com/bsblogs/p/7783997.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!