事件驱动的简明讲解

作者: 码匠_信龙 | 来源:发表于2016-06-18 10:40 被阅读4231次

关键词:编程范式,事件驱动,回调函数,观察者模式
作者:码匠信龙
举个简单的例子:
有些人喜欢的某个公众号,然后去关注这个公众号,哪天这个公众号发布了篇新的文章,没多久订阅者就会在微信里收到这个公众号推送的新消息,如果感兴趣就打开来阅读。

公众号例子.png

事件驱动模型可以理解为上面的例子,是设计模式中观察者模式的一种典型应用。除了订阅公众号外,如你关注某人的微博,关注某人的简书,当被关注者发了个新状态或者新文章,你会收到他们新的消息,这些都可以理解为事件驱动模型。

实际上,世间万物各种属性的变化,我们都可以抽象为事件,最直观的是图形界面应用里,如常见的点击、双击、拖动操作,又或者是游戏里的英雄升级了,怪物死亡了等等,都可以视为一个事件发生了。而发送事件的事物称为事件源,对这个事件感兴趣的事物为监听者,事件发生后监听者会收到这个消息,然后做相应的反应。

例如上面公众号例子可以翻译为,监听器(订阅者)监听了(关注了)事件源(公众号),当事件源的发送事件时(公众号发布文章),所有监听该事件的监听器(订阅者)都会接收到消息并作出响应(阅读文章)。

1.公众号为事件源
2.订阅者为事件监听器
3.订阅者关注公众号,相当于监听器监听了事件源
4.公众号发布文章这个动作为发送事件
5.订阅者收到事件后,做出阅读文章的响应动作

公众号例子按事件驱动可以理解成下图

公众号例子翻译.png

所以事件驱动模式可以进一步抽象理解为由事件源,事件对象,以及事件监听器三元素构成,能完成监听器监听事件源、事件源发送事件,监听器收到事件后调用响应函数的动作。

事件驱动主要包含以下元素和操作函数:
元素
1.事件源
2.事件监听器
3.事件对象

操作函数
4.监听动作
5.发送事件
6.调用监听器响应函数

了解清楚了事件驱动的工作原理后,读者可以试着用自己熟悉的编程语言实现,编程主要实现下面的内容,笔者后续给python实现

用户根据实际业务逻辑定义
事件源 EventSources
监听器 Listeners

事件管理者 EventManager
成员
1.响应函数队列 Handlers
2.事件对象 Event
3.事件对象列表 EventQueue
操作函数
4.监听动作 AddEventListener
5.发送事件 SendEvent
6.调用响应函数 EventProcess

在实际的软件开发过程中,你会经常看到事件驱动的影子,几乎所有的GUI界面都采用事件驱动编程模型,很多服务器网络模型的消息处理也会采用,甚至复杂点的数据库业务处理也会用这种模型,因为这种模型解耦事件发送者和接收者之间的联系,事件可动态增加减少接收者,业务逻辑越复杂,越能体现它的优势。笔者后续文章会讲解这种模式的应用场景和它的优势。

版权声明:本文为博主原创,欢迎转载分享,只需注明作者与出处http://thinkingroom.me

相关文章

  • 事件驱动的简明讲解

    关键词:编程范式,事件驱动,回调函数,观察者模式作者:码匠信龙举个简单的例子:有些人喜欢的某个公众号,然后去关注这...

  • 阅读 大话Netty线程模型和Reactor模式

    讲解reactor模式 和 Netty线程模型 设计模式 Reactor模式(反应器设计模式),是一种基于事件驱动...

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

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

  • 什么是回调

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

  • 事件

    事件 1.事件驱动与数据驱动 用原生JavaScript事件驱动通常是这样的流程: 先通过特定的选择器查找到需要操...

  • 02.12事件绑定

    JS是事件驱动语言 1.事件三要素:事件源、事件、事件驱动程序 2.绑定事件a。 直接通过标签绑定事件-直接在事件...

  • Spring的事件驱动模型

    Spring的事件驱动模型 事件驱动模型的三大组成部分 事件:ApplicationEvent 抽象类—继承自 J...

  • 浏览器事件模型

    什么是事件 我想你很可能听说过事件驱动, 但是事件驱动到底是什么?为什么说浏览器是事件驱动的呢?为什么 NodeJ...

  • 数据驱动 事件驱动

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

  • 事件驱动模型

    观察者模式与事件驱动模型 观察者模式: 事件驱动模型 2.事件驱动模型 事件源 持有监听器列表,或者各种类型监听器...

网友评论

本文标题:事件驱动的简明讲解

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