00:01
观察者模式在JDK应用的源码分析我们看一下,那么在JDK里面呢,有一个叫observable这个类,好,这个类里面它就使用到观察者模式,我们来看一下它的源码。那在哪里写呢?我们仍然是在这边写一个,好吧,写一个class,我们来看一下al。那这里面我们怎么去追这个码呢,追这追这个源代码呢,看一下。我们看一下这里面有个al。Observer,我们来看一下。追进去。好的。哎,这地方还哦,这两个都是这个哈,还不好看。呃,那我这加一个observer,我们把这个拿过来吧,那就追这个。Observable。Verb,好,加这个。A Le observable,我们来看一下这个类,它是干啥的?追哪一个呢?追它。
01:06
我们在这边可以看到同学们,这是一个类class,这个类里边呢,大家有没有发现它这里面有一个集合vector,这个vector里面呢,呃,放的是。那这个OB就是我们的一个什么呀,大家看一看是个接口,这个接口里面是不是也有update方法。是不是,那当然了,我们具体的observer的它的子类,你可以根据实际情况去更新就行了,加起来就行,然后我们再来看这边observer这个这个类里面呢,它是否实现了相关的方法,看是不是有这些呢,第一个。有ADD,它不叫,它不叫这个register,它叫ad,还有一个delete。Delete observe就是我们前面写的类似于。Remove observer,它还有一个notify,看到没有?这边有个notify里面呢,我们看有个no notify observers,我们看一下这个源码是不是他在这里面也对他进行了一个便利。
02:09
然后遍历完了过后呢,从这个集合里面取出来以后,把它转成observer,然后再调它的update,实际上你会看到跟我们前面讲的这个观察者模式几乎一样,但是唯一不一样的是什么呢?唯一不一样就是这个observer,他既充当了,就说这个observer就是我们的那个,类似于它是一个subject。那但是呢,他他是直接把这个类和接口放在一起了,就是他没有去实现一个接口。就是没有实现一个叫subject的接口,因此它是以类的形式,直接就是一个类。直接就是一个类,这个类里面呢,有相关的方法,我们原先是让他让这个,呃,就是subject的一个子类去实现那个接口来实现的,对不对,所以说。我们对这个呢,做一个简单的说明,大家一下就明白了,对他角色做一个说明来看一下,首先大家看到的observer。
03:06
Observer对吧。Observer,那么这个observer它的这个作用,它的作用和地位。地位等价于什么呢?等价?它等价于这个我们前面讲的。我们前面讲过的哪一个呢,Subject。Subject这一点大家可以看出来,其实他有点等价于这个东西,只是呢,它是一个类,你原先这个是个接口。对吧,这是第一点,第二点我们来看一下observer呢。Observable。Observ它是一个类啊,不是接口。它不是接口,他因为什么呢?在这个类中,在这个类中已经实现了核心的方法。
04:03
什么核心方法,就是管理我们这个observer核心方法是不是啊,即。及管理什么呢?Observer的核心方法。哪些方法呢?比如说他这边有爱的。是不是有爱的有?是不是还有一个not吧?No。Notify。这个楼牌方法其实都有。所以他这里面管理observer的方法其实都已经写完了。好,我们再来看这个observer。这个observer呢,就它的作用,作用和地位。是等价于什么呢?等价于我们前面讲过的,讲过的这个operator,这个跟我们前面一样。就是他就是一个观察者的一个接口,这里面有一个什么呢?有update的方法。
05:04
OK,然后我们再来看,嗯,就是从这个地方这个逻辑关系,我们可以看出来,他就是个很经典的,对吧,只是我们这强调一下observer。ER和这个observer。他是干什么呢的使用方法,使用方法和前面讲的讲过的一样,基本一样的,只是强调一点,只是verb。这个单词。Verb。Observer。A obervable这个呢,是一个类,是一个类,它通过什么呢?它是通过这个继承,它是通过继承来实现,实现这个观察者模式的。也就是说,嗯,他直接就是一个内容,你如果想在这个地方去做他的一个职位,直接去继承他就可以。
06:07
如果你有具体的。这个subject的子类可以去继承,它也能完成相应的操作。好,这一点就是我们对这一个JDK中使用观察者模式的一个分析。一个微信,从这里可以看出来,它就是我们的观察者模式,而且名字都取的一样,对不对,你看这叫observer,我们也叫observer,只是这个地方呢,这个ober呢,它没有实现接口了,它自己直接是一个子类,而且把核心方法也就实现了。然后你如果是想在这个下面再做职位,你可以去继承他。继算这个OB observerable,然后呢,去根据你的情况来进行一个定制,好就这样子的关系,好那关于观察者模式呢的源码分析,我们就给大家聊到这里。
我来说两句