00:00
Java设计模式之代理模式,我们来看一下代理模式,我相信对我们大部分同学来说并不陌生,应该都听过代理模式在什么地方你们用过,想一想是不是在Java的反射学反射的时候,咱们应该是学过这个代理模式的。对吧,那么我们现在来看一下代理模式的具体内容。首先我们对代理模式呢做一个介绍,代理模式对应的英文是part pattern,那么他基本介绍有四点需要了解,首先代理模式它是为对象,这个对象就是我们的目标对象。他给一个目标对象提供一个提升。以控制对这个对象的访问。这个对象指的是被代理的对象。OK,那及通过代理对象访问目标对象,这样做的好处是什么呢?可以在目标对象实现的基础上。增强额外的功能操作及对及扩展目标对象的功能,这个是我们代理模式的一个核心的价值。
01:05
那么这个被代理的对象有哪些分类呢?可以是远程对象。OK,可以是创建开销比较大的对象,也可以是需要进行安全控制的对象,比如说我们直接去调用这个地方,我们呃,不行,我们需要一些安全的验证。或者是你的这个权限的验证,或者是出于某一个安全考虑需要去控制的。所以说这个时候呢,我们也可以用代理模式来解决这样的问题,代理模式具体的形式呢,有这么几种,一种是静态代理,这个是也是一种最简单的代理,还有一种代理呢,是动态代理,动态代理呢还有一个别的叫法,我们来看一下,它叫JDK代理。OK,叫JDK代理,有些地方呢,把它叫做接口代理。都是一个意思啊,就他是接口代理,叫他的叫法是JDK代理,也叫这个接口代理,还有一种代理呢,叫cg Le代理,这个代理呢,他的特点我简单的说一下。
02:09
呃,就是前面两种呢,静态代理和动态代理,它都是基于这个接口实现的,而C内代理呢,它是可以什么呢?可以在内存中,在内存中动态的创建。创建什么呀,对象完成这个代理,而不需要什么呢?而不需要。而不需要实现接口。这是他的一个比较优越的地方。比较优越的地方,所以说呢,这个CG利代理呢,它也属于,其实它是属于什么呢,它是。它是属于什么呀,动态代理。代理的一个范畴。哎,它是属于动态代理分,所以说有些地方直接说这个动态代理,包括JDK代理和CDD代理也是可以的,有些人分类呢,跟我不一样,我是把它分成静态代理,动态代理和CGD不代理,有些地方是这样分的,他说静态代理。
03:09
然后还有一种是动态代理,动态代理包括JDK代理和CGDB代理也是可以的,我这样分分呢,主要是这样子,我我会觉得cg leb呢,它是比较特别的,因为它不需要实现接口,也可以完成这种代理的一个一个效果,所以我把它分成三类,大家知道就行哈,那么我们画一个代理模式的示意图,大家就会明显的知道是什么意思来,我们仍然是打开eclipse,我们画一个类图,简单的类图来说一下。代理的一个基本含义part,没问题,同学们好,我建一个类图,跟上我的思路,建一个类图。下一步。OK,那怎么画呢?假如这是我们一个目标对象,Target object,比如这是我们一个目标对象,里面呢,有一些方法,各位里面有一些方法。
04:05
比如说有1OPERATEER 2ok。那理论上来说,我们调用的时候,按理说应该是通过一个客户端。我们就在这地方去直接依赖它,或者要使用它就完事了。但是在我们编程的过程中,有一些比较特殊的情况,我们并不希望让客户端直接调用它。有这种有有这种需求,比如说我想对这个target object进行安全控制,或者我需要动态的去调用,那怎么办呢?好,这条线我们就不要了,他怎么做的呢?好,我们来看看它会有一个叫做proxy。代理对象。他怎么样呢?他让这个代理对象去。依赖或者叫使用target object,然后呢,我object不要跟他直接发生关系,我干什么呢?我去调它,也就是说我可能会去创建一个target object的对象,但是呢,我调用的时候是通过这个object去调用的。
05:06
明白这意思吧,所以这就形成一个代理的机制。这就形成一个代理的机制,就用他代理对象去调我们的目标对象。好的,那他一个简单的示意图,我们就先聊到这里,大家大致应该明白是什么意思,对不对,好,现在呢,我们就来按照顺序一步一步讲,我们先讲静态代理,每一个每一个代理模式呢,我们都举一个案例。这样大家就一目而了然了,好精彩,代理我们在下节课为大家进行讲解。
我来说两句