美文网首页
设计模式之4发布-订阅模式

设计模式之4发布-订阅模式

作者: 钱学敏 | 来源:发表于2018-06-03 10:33 被阅读0次

定义

他定义对象间的一种一对多的依赖关系,当一个对象的状态发生改变时,所有依赖它的对象都将得到通知,现实生活中,比如我们去售楼中心,服务人员A接待了我们,然后再有客户找到A,这时候暂时没有房子了,等有房子的时候不可能服务人员A一个一个打电话通知,而是订阅A的公共提醒服务。解决回调问题

用jq实现发布订阅模式

取经于汤姆大叔的博客

http://www.cnblogs.com/TomXu/archive/2012/03/02/2355128.html

    <script>
    (function($) {
        var o = $({})
        $.subscript = function() {
            o.on.apply(o, arguments)
        }

        $.unsubscript = function() {
            o.off.apply(o, arguments)
        }
        $.publish = function() {
            o.trigger.apply(o, arguments)
        }
    })(jQuery)

    //订阅
    $.subscript('/some/topic', function(e, a, b, c) {
        console.log(a + b + c)
    })
    //发布
    $.publish('/some/topic', ['a', 'b', 'c'])//输出abc
    //退订
    $.unsubscript('/some/topic');
    </script>

其它场景

  1. vue内部的订阅发布机制
    vm.$on
    vm.$once
    vm.$off
    vm.$emit
  2. jquery三大事件
    on off trigger
  3. Nodejs订阅机制
//event.js 文件
var EventEmitter = require('events').EventEmitter; 
var event = new EventEmitter(); 
event.on('some_event', function() { 
    console.log('some_event 事件触发'); 
}); 
setTimeout(function() { 
    event.emit('some_event'); 
}, 1000); 

相关文章

网友评论

      本文标题:设计模式之4发布-订阅模式

      本文链接:https://www.haomeiwen.com/subject/dffjsftx.html