00:00
把观察者模式的内容进行一个简单的梳理,看一下,那我们这个观察者模式是这样来进行讲解的,看一下它的一个内容的梳理。观察者模式呢,我们是这样说的,诶不是啊,观赏模式这样子的,首先呢,我们仍然是先提出了一个需求,就是天气预报项目的一个需求,那具体来说呢,是这样子的。我们要求实现一个天气预报,而且呢,这里有这样的具体要求,说什么呢?我们可以需要设计一个开放型的API,对,然后呢,便于其他第三方也能接入我们气象站获取数据,这是一个最初的要求,而且呢需要比较方便。而且对代码的改动呢,要尽量的少,对吧,便于我们的管理。那提出这样一个需求以后,首先我们先提出了这个一个普通方案,这个普通方案里面呢,有个核心的叫we data,我们来进行的一个设计,好我们来看看具体来说是怎么做的。
01:07
首先呢,我们先说设计一个wide data。对,那这一点我们就这样子好,同学们简单一点。我们就把这个粘过来就行了,好吧。Y,我们这有个Y内。刮着带这个累。那这个类里面呢,我们具体的是这样来处理的。这这是whether data类在里面,我们说我们可以去主动获取,比如说如果你第三方想去拿到一个最新的数据,我们调用他的data change,这是一种方式,那还有一种方式呢,就是我们所说的这个推送,就是我呢,你你你作为一个第第三方或者一个接入者,你在我这边成为我的一个什么呀属性。那我有数据变化呢,我调用data change,然后在data change里面想办法去调用你这个,呃,聚合,聚合到我这里面的一个对象里面的update方法啊,这种描述很难,同学们就是你看,因为他描述的是类和类之间的关系,所以说的时候有点绕哈,有点绕大家知道就行了,好,这是他的这么一个推送的,推送的一个设计方案,紧接着呢,我们把代码也给大家实现了一把。
02:20
对不对,具体来说一个代码的实现这样子的。那么我们其实分成了三个三个步骤,一个是设计方案。传统的对吧。就是传统的设计方案。方案。OK,传统的设计方案这样子的,那么这边呢,是我们的一个代码实现,代码实现就是我们。最初的这个方案。是不是这这三个分这三个类是吧,好,所以说我把这个呢,给大家复制过来,我们只要里面的一部分就可以了。对吧,只要这一部分,因为这是我们第一个方案嘛。
03:01
也算是解决了,但是这个方案呢,我们发现是有一些不足的地方的,所以说我们对他进行了一个说明,那这个传统方案有存在什么问题呢,说一下。问题的分析,对,这是问题的分析。好,我们把问题分析呢,也给大家写到这问题分析。拉一个小箭头。我们分析出来这种问题呢,主要是扩展性比较麻烦,就是我们这说的,诶当如果有别的这种在扩展的时候呢,需要去修改我们y data,这样就违反了OCP原则,于是乎我们引出了什么呀,观察者模式,那引引出观察者模式过后呢,我们就直接先说一下观察者模式的它的一个基本的什么呀原理。我们看一下观察者模式基本原理是怎样子的。首先我们谈到观察者模式呢,它有点类似于我们这个订牛奶的业务,有什么呢?有subject,有observe。
04:01
对,有,那这里面subject就是我们subject里面呢,它有这么几个核心的方法,这个地方我们也分析出来了。好,当我们分析出来这些具体的内容过后呢,我们就怎么样,呃,这个接收者我们也分析出来了是吧,就oper我们也分析出来了,把它。设计一下。好,然后这边观察者模式,最后我们总结出来它是这样一个东西。什么样的东西呢?是对象之间通过多对一的依赖关系设计方案被依赖的是subject,依赖的是object,那么subject通知object电话。是这样一种逻辑。这样一种逻辑,好,当有这样一个逻辑过后呢,我们就直接来完成了一个代码,首先我们画出了一个示意图,就是用观察者模式来解决。对,我们用观察的模式来,首先我们画出了类图,然后是代码类图说明。对,那么类图呢,就是同学们看到的这张图。那内存完了过后我们就走代码了,代码实现。
05:02
也比较简单对吧,带。代码实现。那代码实现呢,就是我们刚才看到的这个improve包里面的内容我也压一个包放进去,因为代码太多了,咱们就没办法一个一个的拷贝。说直接压个包放这就行了。好,这是我们代码,代码完了过后呢,我们说诶解决解决过后我们干什么呀,说了一下观察者模式的一些优越的地方,对它的好处做了一些分析。两点吧。对,那观察者模式的好处分析完了过后,我们就干什么呢?给大家说了一些,这个代码已经说完了啊,我们又说了观察者模式在JDK这个源码里面哪个地方用到了,是这样子的吧。那我们分析到JDK里面observable。哦,他就用到了我们的观察者模式,那具体来说源码在这里。那么源码在这里呢?我们又对他的源码的角色做了一个简单说明。
06:04
这边对角色进行了分析和说明。是吧,这我们说observable,它的作用相当于讲的subject,只是呢,他不是呃一个接口,而是一个类,而且这个类里面把核心方法已经实现了。Observer呢,它作用和地位和我们前面讲的观察者这个接口一样,它里面一个update方法,如果你要写的话呢,去呃,实现这个observeable observer,那你就有具体的observer的之类了。哦,所以说这样子就可以,那么同样observable呢,Obervable这这ableable如果是这样子,你要去做他的一个subject之类呢,通过继承就可以了,它是这样一种逻辑,好吧,呃,就是跟我们标准的呢,是有些微小的差别的,但整体还是大同小异。好,给大家来一个三号标题。好,同学们,那关于这个观察者模式,我们要说的呢,就到这里大家去领会一下。
我来说两句