观察者模式场景是什么?设计的本质是什么?
首次很多场景中都有观察者,观察者的功能是【发现和通知】。发现如何设计,通知又如何设计?
选自《大话设计模式》的场景。前台服务去观察老板是否回来,回来的话就通知同事不要玩游戏了。
对场景中的对象进行抽象
最终的模式图:
看一篇关于这个的博文:
https://www.cnblogs.com/fingerboy/p/6393644.html
我们看看在Spark中的应用:
ListenerBus用来抽象监控者,监控者属性:通知者列表。抽取方法:通知和事件放入。
任务开始意味着相对应的监控开始:
JobScheduler为例:
val listenerBus = new StreamingListenerBus(ssc.sparkContext.listenerBus)【定义一个监控者类型,这里面存放着关于SparkListenerEvent】
包装一下变成SparkListennerEvent
放入事件后,取事件是每一个类型有一个单独的线程在后台处理。
这个线程启动通常在Context中启动的。
这就是一个简单的事件驱动的模型。大家可以尝试自己实现一个事件驱动的模型。