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

定义

他定义对象间的一种一对多的依赖关系,当一个对象的状态发生改变时,所有依赖它的对象都将得到通知,现实生活中,比如我们去售楼中心,服务人员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); 
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 135,238评论 19 139
  • 工厂模式类似于现实生活中的工厂可以产生大量相似的商品,去做同样的事情,实现同样的效果;这时候需要使用工厂模式。简单...
    舟渔行舟阅读 7,950评论 2 17
  • 1.几种基本数据类型?复杂数据类型?值类型和引用数据类型?堆栈数据结构? 基本数据类型:Undefined、Nul...
    伯纳乌的追风少年阅读 25,911评论 2 46
  • 2。三段,起因,经过,结果 3下雪啦。环境描写手段,具体一系列先……接着……后动作第二段,结束语心情描写最后一段。...
    破茧成蝶我最棒阅读 1,421评论 0 0
  • 废话 1.TCP报文的定义格式: 2.TCP报文的电/光/波信号形式 通过电话线传输就电信号咯(找个电子打火机打一...
    跑步与开车阅读 477评论 0 0