• javaScript设计模式(一)观察者模式


    哈哈。。写了一个钟,一点一点加功能。
    1
    function Publisher(){ 2 this.subscribers = []; //存储订阅者 3 this.news = []; //存储要发布的消息 4 } 5 //使用“推”方式:由publisher推消息给Subscribers 6 7 8 Publisher.prototype = { 9 deliver : function(data){ 10 var that = this; 11 this.subscribers.forEach(function(){ 12 that.news.forEach(function(fnElement){ 13 fnElement(data); 14 }); 15 }); 16 return this; 17 }, 18 addNew : function(fn){ 19 this.news.push(fn); 20 return this; 21 } 22 23 }; 24 function Subscriber(){ 25 //使用"推",订阅者没必要保存发布者。只要发布者保存订阅者就可以了 26 // this.publishers = []; 27 } 28 Subscriber.prototype = { 29 subscribe : function(publisher){ 30 publisher.subscribers.push(this); 31 // this.publishers.push(publisher); 32 return this; 33 }, 34 unsubscribe : function(publisher){ 35 var that = this; 36 publisher.subscribers = publisher.subscribers.filter(function(element){ 37 return element !== that; 38 }); 39 40 /* this.publishers = this.publishers.filter(function(element){ 41 return element !== publisher; 42 }); 43 */ 44 return this; 45 } 46 }; 47 48 //example 49 var f1 = function (data) { 50 console.log(data + ', 赶紧干活了!'); 51 }; 52 53 var f2 = function (data) { 54 console.log(data + ',不然没饭吃!'); 55 }; 56 57 var publ = new Publisher(); 58 publ.addNew(f1).addNew(f2); 59 60 61 var subc01 = new Subscriber(); 62 subc01.subscribe(publ); 63 64 var subc02 = new Subscriber(); 65 subc02.subscribe(publ); 66 67 subc02.unsubscribe(publ); 68 69 publ.deliver('你们');
  • 相关阅读:
    上班中午
    有些确实牛擦的有点嚣张!!! (zz)
    Docker学习笔记(二)
    结对项目第二阶段小结
    软件工程结课总结
    案例分析作业
    结对编程总结
    Docker学习笔记(一)
    四则运算
    构建之法1~5章
  • 原文地址:https://www.cnblogs.com/yuyutianxia/p/3275239.html
Copyright © 2020-2023  润新知