美文网首页
事件驱动和消息驱动

事件驱动和消息驱动

作者: 假鞋子 | 来源:发表于2017-05-22 10:46 被阅读0次

消息驱动和事件驱动很类似,都是先有一个事件,然后产生一个相应的消息,再把消息放入消息队列,由需要的项目获取。他们的区别是消息是谁产生的

消息驱动:鼠标管自己点击不需要和系统有过多的交互,消息由系统(第三方)循环检测,来捕获并放入消息队列。消息对于点击事件来说是被动产生的,高内聚。

事件驱动:鼠标点击产生点击事件后要向系统发送消息“我点击了”的消息,消息是主动产生的。再发送到消息队列中。

ps:二者都可以根据消息队列判断有没有事件,然后没有的话也都可以进入睡眠。

事件模式耦合高,同模块内好用;消息模式耦合低,跨模块好用。事件模式集成其它语言比较繁琐,消息模式集成其他语言比较轻松。事件是侵入式设计,霸占你的主循环;消息是非侵入式设计,将主循环该怎样设计的自由留给用户。如果你在设计一个东西举棋不定,那么你可以参考win32的GetMessage,本身就是一个藕合度极低的接口,又足够自由,接口任何语言都很方便,具体应用场景再在其基础上封装成事件并不是难事,接口耦合较低,即便哪天事件框架调整,修改外层即可,不会伤经动骨。而如果直接实现成事件,那就完全反过来了。

Jfinal中dreamlu的事件驱动插件Jfinal-event
准备:先新建一个插件。初始化时,扫描指定包里面的有@Listen.classannotion的类放入List中,然后从每一个监听器的泛型type中获取事件类。生成一个map容器,其中键是事件,值是监听器。然后初始化EventKit(将上面的map传入),方便接下来使用。
工作:在需要监听的地方用EventKit.postEvent(XXXEvent.class)表示发生了一个XXXEvent.class事件,然后EventKit从之前的map中通过XXXEvent.class知道有哪些监听器会监听这个事件,然后建立一个新的线程执行这些监听器的新的实例并start()

http://blog.csdn.net/haonan9122/article/details/5753842

相关文章

  • 事件驱动和消息驱动

    消息驱动和事件驱动很类似,都是先有一个事件,然后产生一个相应的消息,再把消息放入消息队列,由需要的项目获取。他们的...

  • 小研05:关于等保2.0市场空间测算的思考

    网络安全行业主要的驱动因素包括合规驱动、事件驱动、技术驱动、业务驱动,其中合规驱动和事件驱动在当前阶段影响最大。预...

  • 明远运营读书会5-9打卡

    读《小群效应》 1)激发人的六大驱动力,分别为利益驱动,荣誉驱动,关系驱动,地狱驱动,兴趣驱动和事件驱动。 2)人...

  • Android消息循环分析

    我们的常用的系统中,程序的工作通常是有事件驱动和消息驱动两种方式,在Android系统中,Java应用程序是靠消息...

  • tendermint 共识算法在工程上的实现

    大致可以将consensus分为 自身状态机(由外部消息驱动和timeout驱动),其他节点状态机(由外部消息驱动...

  • [code.nginx] Nginx服务器的事件驱动模型

    事件驱动模型是Nginx服务器保障完整功能和具有良好性能的重要机制之一。 事件驱动模型概述 实际上,事件驱动并不是...

  • 什么是回调

    程序可以分为两种:「非事件驱动」型程序、「事件驱动(event-driven)」型程序。 • 非事件驱动型程序 这...

  • 《小群效应》读书笔记

    一、社群效应背后的六大驱动力: 荣誉驱动,利益驱动,关系驱动,事件驱动,地域驱动,兴趣驱动 群的初步形成往往基于除...

  • 分布式事务实现模式与技术

    实现模式 消息驱动模式:Message Driven 事件溯源模式: Event Sourcing TCC模式: ...

  • 数据驱动 事件驱动

    事件驱动 由事件决定程序的流程

网友评论

      本文标题:事件驱动和消息驱动

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