00:01
代理模式的一个内容的梳理,我们来看一下,那除了我前面讲的三种代理模式之外呢,其实还有几种变种,大家知道就可以了,用的平时在开发中用的并不多,一个呢叫防火墙代理,那防火墙代理呢,是内网通过代理穿透防火墙实现对公网的一种访问,其实思想还是跟前面一样,只是它的应用场景呢,是防火墙这个应用的,还有叫缓存代理,缓存代理呢,它的核心也是代理,代理的这种事想只是它的一个具体应用场景是当我们请求图片或者文件等资源的时候,先到缓存代理里面去取,如果取到资源都OK,取不到,然后再到公网或者数据库取,然后再缓存。还有一种叫远程代理,那远程代理呢,远程对象相当于我们本地的代表,通过他可以把远程对象当做本地使用,好这这个这是他的一个远程代理的示意图。啊,就说我假,假如说我我远程在另外一个网络系统上有一个remote对象,那么我在这里去调的时候呢,我这有一个本地的一个代理对象,我只需要调本地的对象,就感觉好像用它去调了远程的一个对象,至于他们中间怎么通过网络传输,还是通过相关的一些远程代理技术,我不关心。
01:22
这就叫远程代理。还有一种叫做同步代理,同步代理呢,它主要是完成多线程编程的时候,这个多线程的同步,就说如果你多线程之间存在同步关系,我直接我就不去处理这个多线程同步的问题,我直接找这个同步代理去处理。就这样子的,就好像,呃,打个比方说,现在呢,有abcd有四个人准备去火车站买票。那如果四个人都同时去的话呢,可能造成这个出出票的问题,就人很多,比方说一一百万个人都跑去到我们这个呃站点这个网站去买票,那肯定就会造成现场冲突嘛,那怎么办呢?我们找一个代理,你呢由我去找他,我去找他有去找由这个代理去跟我们的这一个真正的这个这个业业务逻辑进行处理,因为他是自他自己嘛,他自己去完成同步的机制就可以了,至于他是怎么去处理,比如说是呃通过这个代码同步代码块还是通过加锁,这个就无所谓啊,就是你来处理这个事情就行了,这个就叫同步代理,其实这里面所说的防火墙代理,缓存代理,远程代理,还有同步代理,它只是我们这个代理的一种,具体的应用场景的核心仍然是我们的前面讲的什么静态代理啊,或者是动态代理里面的JDK代理,还还也有,也有可能是我们的这个c c live代理。
02:44
OK,好,关于代理的几种辩题我们就说到这里,那现在呢?我们花一点时间把这个代理模式的内容进行一个简单梳理,来看一下我们讲了哪些内容。我走。
03:00
插入。插入一个分页符,我们说一下这这章我们讲的是代理模式。OK。代理模式二。那代理模式我们讲了哪些内容,以及怎么讲的呢?首先我们对大家说了一下代理模式的基本介绍。就说这个代理模式,它是一个怎样的概念,聊了一下。对不对。我们先给大家说一下代理模式的基本概念。基本概念呢,我们这里整整理了有这么几点对吧,几点OK。给大家拿过来。同时呢,我们画了一个图,这个图大家还有印象吧,是不是在这画的,还是找到我们eclipse把这个图拿过来,应该是这画的,我没有记错的话,应该是这。核心思想就是通过一,我们通过这个P去完成对目标对象的一个调用或者是处理。好,还有一点呢,我们要明确的知道哈,就是代理的形式,一共有这么三种静态。
04:05
动态。那动态代理呢,也主要指的是JDK代理,JDK代理呢又叫接口代理,还有一种叫cjd代理,那cjd代理呢,其实它也是属于动态代理的这个范畴,只是我们把它单独的分开,因为他跟静态代理和动态代理还是有点区别,就是它不需要实现接口了。只是有些书上呢,他直接这样说的。我们代理有两种,一种是静态,一种是动态,动态呢分JDK和我们的CG力,就这样子分的,好吧,明明白这个道理就行了,我们把这个说完了,我们接着继续往下讲解的,我们讲解的是静态代理。是不是我们讲的静态代理?来聊一聊静态代理的概念。那么静态代,静态代理呢,就是我们具体的第一个第一个代理了,我们先给同学们说一下静态代理的这一个基本介绍,以及提出了一个应用实例。
05:01
引起大家思考。来看一下。好,这是对他的一个介绍。然后呢,我们这提出了一个应用实例,这里面呢,有具体的要求。就是这个应用实力具体的要求是什么,聊了一下。当我们有了这个要求过后呢,我们就直接来予以实现,我们怎么说呢?我们先走了思路分析,还画类图,最后代码实现了一把。这个是要求。画一个小箭头对不对?好,接着往下看。那这边呢,是思路分析和对应的类图。聊一下。呃,我们先看看类图是怎么画的。那图我们找到静态代理这个。这个包包我们实际上。把它放大一点。是这个图。大家看我们静态代理呢,他是大体的思路就是有一个接口,然后呢,让我们目标对象以及。代理对象都去实现这个接口,然后把我们的这个目标对象呢,聚合到我们这个就是代理对象里面去,然后client端用代理对象完成对被代理对象的一个调用,仅此而已。
06:12
思路就这样子的。那这个说完了以后,各位朋友我们就写了一段代码来验证,那具体来说这个代码呢,是用一个包的形式啊,就在这里,因为也比较多,我就不一个粘了来,还是老规矩压一个包。放过来就可以了。非常简单。放这儿来。这是我们讲的静态代理,那静态代理完了过后呢,我们说还有第二种代理模式叫做动态代理啊,当然还分析了一下静态代理的优缺点是吧,还分析了一下他的优缺点,可以放这吧。有缺点,聊了一下。那今天代理说完了过后呢,我们就紧接着给大家讲了什么呀,讲了动态代理。
07:00
我们说了动态代理。还是老规矩,首先呢,给各位同学介绍一下动态代理的基本概念,然后说了一下动态代理一个核心方法就是他。还记得这三三个参数干什么的吧?No,还有interface以及VO invocation handler应该有个印象啊,我在视频里面是详细给大家做了介绍的。好的,这是先做了基本介绍,没问题。然后呢,这边。说了一下JDKJDK生成的代理对象API,核心就是这两个。是不是同学们应该很好理解哈,应该很好理解,核心就是这个new part instance。对,通过反射机制返回了一个代理对象,动态的返回一个代理对象。好的,那有了这样一个基础过后呢,我们用。动态代理。用动态代理这个案例,呃,重新用动态代理的方式呢,对前面的方法进行一个改进,加深了对动态代理的理解,还记得吧。
08:03
好,放这就可以了。那这边我们来一个小箭头。是吧,这是我们的类图以及代码实现,来看一下类图拿过来在哪里呢?仍然是在acl里面,是在这写的。我们每个地方都是有案例的,也有图。王,好,就截这个图吧,从这个图我们可以看到跟前面不一样了,就是我们p factor呢,无需再去实现这个接口,它是动态的返回一个代理对象的。具体的在代码里面都有。好,这是我们的一个类图,就是面试官问到你这几者的区别,一定要给他答上来,好吧,代码实现来聊一下,那代码实现呢,我们是在这个地方仍然打一个压缩包即可。压一个包。放这来zip。好的。这是我们动态代理的内容,紧接着呢,我们讲了第三种CGD代理,那CGD代理呢,我们还是按老规矩,首先给大家做了一下基本的介绍。
09:08
来看一下。一共有五点是不是。一共有五点。CG的基本介绍。那五点这儿都已经作了说明。这都做了说明,看一下就可以了,这边还有一点就是第五个在这。诶,这个地方调整一下。那核心是在哪里呢?核心是在这个地方哈。就是。就是有时候目标对象只是一个单独的对象。而且他并没有实现,没有实现任何接口。那这个时候我们想对。呃,就是说这个时候我们想对这个单独的对象进行一个代理呢,我们就可以用cg Le代理,这是它的核心所了,CG代理还有一个名称叫做子类代理。它是在内存中构建一个子类对象,从而实现对目标对象的一个功能扩展,因为它实际上是使用拦截器的机制来处处理的,所以说还有一句话,CD呢,它是也也有些地方是归属在动态代理的。
10:12
好,这是它的一个概念,这个概念说完了过后呢,我们给大家做了一下CG代理的一个实现步骤,分三步。是不是分三步聊一下这个话题?他的三部曲,等一下。好,给大家举到这里来。是吧,三部曲,那这里面我们讲到,如果你要用cg lib代理呢,是需要有这个炸包的,所这个炸包呢,需要同学们把它引进去,好吧,代码里面,资料里面我们都会有。当我们有了这样一个实验步骤以后呢,我们就用C。代理模式重写了前面的案例。是不是这样子的,我们重写了前面的案例,诶这个。没有站好,重新来。对,重写了前面案例,具体来说,我们先提出了需求,跟前面一样,思路分析,还有源码的一个debug。
11:06
好,把那图拿过来,类图仍然在我们这个里面的C里这块。同学们可以看到这又发生变化了是吧,此时此刻?我们这个被代理的对象呢,也不需要实现接口了,但是有一点我们pro factory呢,去实现了一个叫method intercept这个接口。因此我们可以看到,在这个重写intercept的方法的时候呢,其实就相当于说你在调我们被代理对象的方法时,他会去触发intercept实现拦截,在拦截过程中,同学们可以去加入新的功能,或者注入一些新的这个处理。好,这是他的一种机制。所以说C代理其实他是比较简单的,或者说他他他更容易让我们去想,就说这有个类我就可以代理了。完了,就这么简单,那代码呢?给大家也板述一下cg live的代码。
12:01
放这来压一个包。给各位同学压一个包。放到我们的笔记中完事。好同学们,那关于这个呢,我们就说到这,最后我们说了一下,在不同的应用场景里边呢,我们也有一些这个代理模式的具体的一些变种,比如说如果你把代理模式使用在防火墙。这个上面我们就叫防火墙代理,如果是用来做缓存处理的,就叫缓存代理,如果是用来做对远程对象的一个代理,我们叫远程代理,如果是做同步,我们就同步代理,以此类推。所以说呢,运用到不同的场景,它的叫法呢,也会有一些微小的区别,放到这里来吧。OK。好放到这,那么我们这分别捋一捋这个思路哈,有这么几种代理给他编一个号就可以了。三种代理对吧,三总代理。好,这边我们就说到这吧,同学们,那关于我们这所说,诶还有一个同步代理没怎么没上去呢。
13:03
看一下。那少了一个,把同步代理咱们也放过来吧,既然已经写了对吧,也不在乎这点。同步代理好各位同学,关于我们的代理模式三种就给同学们介绍到这里,大家好好的领会一下。
我来说两句