00:00
知识链模式的注意事项还有细节,我们把它梳理一下。那么职责链模式的好处呢?是这样子,它可以把请求,还有把处处理,把它分开,实现了解耦,提高了我们的灵活性,这是它的好处。同时呢,它简化了对象,使对象呢不需要知道链的结构,因为对他来说,链这个处理的整个职责链是怎么形成的。对吧,对象他可以不用去关注,第三一个呢,性能它的不足的地方就是性能会受到一定的影响,为什么说呢?因为特别是在练比较长的时候。因此需要控制链最大节点的数量。你因为它是一个便利形式的嘛,所以相当于是一个链状的,所以说如果我们这个链比较长,那显然它的效率就比较低,对吧,所以说我们要控制最大节点数量,一般通过在handle格,就是我们的那个处理者中设置一个最大节点数量。
01:00
然后在s next方法中判断是否已经超过了这样一个值。超过了这个值,最大这个值呢,则不允许再建立了。OK,避免我们这个链过长,无意识的破坏系统的性能。还有一点呢,就是因为它是链式的,所以说他在调试的时候呢,会带来一些问题,就是如果我们这个链很长,你追踪啊思维要你有可能这边调好了,下一个链子又出问题,所以说我们在处理这个时候呢,在做调试的时候要注意调试的时候逻辑可能比较复杂。最后呢,我们说一下链式,呃,职责链模式的应用场景,它是在有多个对象可以处理同一个请求的时候经常使用,比如说多级请求,请假加薪等审批流程,或者是在我们Java web里面的这个汤姆凯特对。Co就是编码的处理或者是拦截器都有可能会用到。我们指着链。就说这个处理不了,下个季度处理就完了。
02:02
好,这是我们职责链的注意事项,那么现在呢,我们把这个职责链讲解的内容做一个梳理,我们看看是怎么来讲解的哈,梳理梳理一下。来看一下职责链模式,打开我们的笔记,我们梳理一把。OK。插入。一个分页符,梳理梳理。制作链模式呢,我们首先仍然是先抛出了一个需求。什么需求啊?就是对一个OA系统的采购,审批一个项目。对,我们先把这个需求拿到这来。那么有了这个需求过后呢,我们首先是先用的传统的方法来解决,是这样子吧,传统方法呢,我们认为写一个purchase request,然后呢,我们在这里加上分支控制来处理,显然这个方案呢是不太好的,因为他这个耦合度太高了,耦合度太高,所以说我们没有用它。
03:07
没有,没有去使用它,于是我们怎么处理的呢?好,我们画了一个类图,好,就是它原始,就是传统的方案。然后我们分析了一下传统方式它带来的一些问题,于是我们引出了什么呀,责任链模式就这样引出的。放到这来。责任链模式,我们仍然是给他编一个号。在这里呢,我们引出了责任链。或者叫职责链。引出来以后呢,我们仍然是这样讲的,首先呢,我们对职责链模式做了一个基本的介绍,就它到底是一个什么样的设计模式做了基本的介绍,这边我们给他了三点说明。整理一下。三点说明。那有了这三点说明,说明以后呢。
04:01
我们接着往下看哈,就是我们又画了一个职责职责链的类图,并且对他的。各个角色,或者或者是说他的各个角色的职责做了一个解释。我们把内图拿过来。这是对他的一个原理类图的说明,并且呢,我们对它里面含有的职责,就是各个角色他的职责做了一定的说明,加深了印象。把那图给同学们反过来好吧。放到这边来。那这个类图说完了以后呢,我们就。对职责链模式有了一定的了解,然后我们用直热链模式来解决了OA的。采购审批这个小小项目。放到这里来。那么具体来说,需求。是这样子的,然后呢,这边是我们的类图,还有代码实现,也给大家整理一下,我们先把类图拿过来,类图在哪画的呢?打开eclipse。
05:05
在这个位置是吧,我们画了。画了审批项目的一个类图。把它放到这就可以,具体的代码呢,因为比较多,所以说我仍然是给大家打一个压缩包就行了,放在这好。这是我们职责链模式来解决的。同样压一个包就行了。放这儿。把这部文件放到笔记中,便于大家的复习。好,当我们这个讲完了过后呢,为了加深印象,我们也说了职责链模式,他在spring mvc其实也是有用到的。主要是在哪里呢?Handler execution change这里面使用到的。来,放到这儿来。我们整理了三点。没问题吧,好。嗯,这个图我就不画了。代码呢,我们就直接从幻灯片里面把它拿过来。
06:03
还有一段源码。对,把源码呢,也给大家整理到这边来,把源码放过来好吧,第四一个源码。源码和说明。第二还有一个就是最后对角色啊,对这个对源码的一个总结。是不是这样子的。那源码呢,我们直接就从刚才写的代码里面拿过来看一下就行了,是在哪写的呢?在这里。券这里面呢,我们对他做了一个追踪和说明。放多少年?并且呢,最后我们整理一下spring mvc就是。根据一个请求,他是怎么去处理的,包括handler。Execution。以及和这个intercept,就是我们拦截器它是怎么去工作的,就是我们这个kind execution券里面怎么去拿到这个intercept怎么去处理的,我们都做了一些相应的说明和解释,好放这就可以了。
07:07
这边呢,我们给它来另外一个符号好吧。好,这是我们对源码的剖析,然后呢,最后我们还说了一下职责链模式的注意事项,总结了几点。它的一些好处,它的一些优优点和他有可能给我们带来的一些问题。这里面我们强调了一点,就是练不要太长,是不是我们这说了一句话,因为你练比较长的时候呢,我们这个链他在一个个去进行这个处理的时候,可能会带来性能上的。一个呃,一个影响,因此呢,我们在这地方可以这样去处理,我们干什么呢?就是设置在handle断里面设置一个最大节点的数量判断,在设载next的时候呢,我们判断是否已经超过了这样一个最大值,如果超过了呢,我们就不要再见了。
08:01
好,这是对直射链模式的说明,调试不方便,这个其实也也不是那么的。明显哈,就是一般来讲,我们通过下面代码提示一下就可以定位的,只是呢,你有可能是这边调好了过后,可能带来下一个,就下一个处理的节点,会带来还会带来问题,因此呢,调试的时候,有可能是调试完一个还得调试下一个。好,这是我们所说的折折链模式的注意事项和细节。各位同学,那关于职责链模式的职责链设计模式呢?就给同学们讲解到这里。
我来说两句