ONOS控制器中的事件监听器

事件监听器其实是观察者模式的一种实现


Subject为抽象主题接口,定义了主题类中对观察者列表的一系列操作, 包括增

Concretes Subject为具体主题类,实现抽象主题接口,在这个类中我们需要先定义一个Observers列表,并对接口中的方法进行重写,在实现notifaObservers方法时,通过迭代的方式调用list中每一个observer的update方法。这里注意notifyObservers中的同步块。在多线程的情况下, 为了避免主题类发布通知时, 其他线程对观察者列表的增删操作, 同步块中用一个临时List来获取当前的观察者列表。


Observer为抽象观察者接口,定义了观察者对主题类更新状态接受操作

ConcreteObserver为具体观察者类,实现观察者接口更新主题类通知等逻辑

事件监听器的逻辑结构如图所示


观察者(Observer)相当于事件监听者,被观察者(Observable)或者说主题(Subject)相当于事件源和事件,执行逻辑时通知observer即可触发oberver的update,同时可传被观察者和参数。


EventListener为事件监听器的父类接口


IntentListener接口继承了EventListener接口,并制定监听的对象为IntentEvent


IntentManager继承了父类AbstractListenerManager,AbstractListenerManager相当于事件源,在这里实现了注册listener,移除listener和post方法。在这里,nofity方法相当于post,当出现intent event,intentManager负责调用通知eventDispatcher,再由eventDispatcher负责具体事件的分发。


eventDispatcher接口定义了post方法,eventdeliveryService继承了eventdispatcher接口并定义了一个新方法来控制event sink处理event的时间。

coreEventDispatcher类继承了defaultEventSinkRegistry并实现了eventDeverliveryService接口,负责具体事件分发处理。

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 134,854评论 18 139
  • 设计模式概述 在学习面向对象七大设计原则时需要注意以下几点:a) 高内聚、低耦合和单一职能的“冲突”实际上,这两者...
    彦帧阅读 3,772评论 0 14
  • 在街角闲置处 看,那里有只奇怪的木马 斑驳花纹褪去张扬色彩 在日光下呈现出凄清荒凉的反射 马腿伤痕遍布 鬃毛纷繁杂...
    珥苒阅读 288评论 0 3
  • 大多数人都希望自己的孩子更优秀,你就得给他们一个比当初更好的起点。 孩子们要明白的第一点是:目标是什么?如何设定目...
    小帕_dreamer阅读 174评论 0 0
  • 梦见,我做梦梦见两个人在我的梦里完成了一篇文章 晕,有盗梦空间的意思了,层层梦。醒前还在帮他们最终润色,可睁眼却已...
    真言臻宇阅读 277评论 1 2