00:00
成,那下边的话呢,我们就开始来去写啊,动态代理这个例子啊,就不看那个PPT了,现在新建一个model。嗯,这12。新建一个包行,那么写这个动态代理之前,我呢先写一个静态代理啊,一方面呢,大家熟悉一下,回顾一下我们的静态代理,另外一方面呢,我们讲这个动态代理的时候呢,一会我还想用一下这个静态代理啊,嗯,首先呢,我们先写一个静态代理的一个例子,嗯,不妨我就叫做嗯,Static的一个proceed的一个test,你看这呢,是一个静态代理举例。好,这呢,我们写一个例子啊,嗯,这我们都收到这个接口的这个事了,首先先用我们这个叫interface,哎,不妨呢,我现在写一个叫close factory,就是衣服的一个工厂,嗯,这个里边呢,嗯,衣服的一个工厂,它自然而然就具有这个功能,叫produce clothes。
01:08
对,知道衣服这个事儿啊,嗯,再接下来呢,我们去提供所谓的这个代理类和被代理类,哎,先提供一个代理类吧,哎,这个都行啊,哎,Class代理类,那我们就写个叫pro,就是代理的意思啊,Pro close factory,哎让它implements,咱们的close factor行,那实现以后呢,自然而然你要重写这个,哎,这方法了,这样子啊,然后在我们这个带类这个位置,我们声明一个属性,诶private就是咱们诶这个接口声明的类型啊,我就要一个factory。行,然后呢,提供当前类的这个构造器。
02:00
行在这个构造器当中,我们提供参数,对我们这个属性呢进行初始化,这个呢,都是面向对象讲过的,行写完了啊,那杨IG呢,就是我们回头呢,先造一个带雷类的对象,哎,造这个对象的时候,调这个构造器,我们传进来一个factory,这个factory呢,实际上啊,就是咱们回头初始化的时候呢,是不是就拿咱们的被诶带雷的对象进行实例化呀。哎,对象来进行实例化啊。那就拿这个的就就别写了,哪哪有点通俗了,用吧,用背带类的对象进行实体化啊好,这个类呢,我们啊这里边还没写呢,哎,当我们通过这个代理类的对象去调这方法的时候,哎,我们里边做什么事呢?比如我们先写几句话啊,说out一下,说这个代理啊,这个工厂啊,做一些准备工作啊。
03:04
啊,这里边会涉及到一些代码,咱们这呢就不写具体的一些很复杂的方法了,那就看具体场景,这呢,咱们就只是写一个c out啊,那它准备好以后,那么接下来我们就调用一下,回头呢,咱们拿这个带类被带类对象进行的实例化啊,相当于这个被带理对象,哎他呢就开始去执行哎这个方法,那执行完以后呢,我们这个带类的就项呢,可能还会做一些事儿,那你就再写一些,那比如说这个带类工厂。嗯,代理工厂啊,然后做一些啊,这个后续的啊,这个收尾工作啊。OK就完事,那这呢,就是我们这个代理类,它的这样的一个这个代码啊,那接下来我们去提供一个具体的被代理类。你看背带类,比如说我们这具体的是一个耐克的啊,Close factory。
04:00
要求他也去implement close factory,接下来也需要呢,去实现我们这个接口中的抽样方法,哎,这个抽样方法呢,我们可以就写普通的一句话就可以了,啊说耐克工厂,哎,生产那一批这个运动服好,这呢我们就写这样的一句话就OK了,行,那这个代码的话呢,我们就写完了,下边来做一个这个测试。啊没里边,那进来以后呢,我们需要呢,去造一个带雷对象,那你要造这个带雷对象呢,通过构造器又得需要呢,传一个参数,参数呢就是我们被带类对象,所以首先呢,先造一个诶被带类的对象啊,先来一个他比如说你就叫个耐克吧,诶等new一个啊耐克close factory,然后接下来我们去new一个叫pro,这个close factory。哎,Proceed close factory这里边呢,需要传一个诶对象,就是我们被代理这个对象,然后al enter生成一个,哎,这个proceed close factory,诶这个呢,就是我们这个代理类的对象啊,创建这是代理类的对象,然后复制一份,上面这个呢,就是创建被代类的对象行,那么接下来我们通过代理类的对象去调用啊叫produce close的时候,哎,像这个位置的话呢,你写上proceed close factor也行,写成这个close factory都都可以啊。
05:38
啊,写成这儿的话呢,你看到的其实就是一个接口了,这个位置呢,是不是也一样的道理啊,哎,就是你看到的其实都是一接口了啊,然后这个接口里边生明过这个方法,哎,正常相当又是个多态的形式一样啊,哎,我们明明这是一个带类对象,你调这个方法,哎,看似编译期间认为你是一个接口中的,那实际执行呢,都是你这个代类对象重写以后的这个方法,嗯,对,就这个方法哈,那在这个方法当中又调用了这个factory了,这factory呢,就是你构造器声明的时候呢,你用的这个实例化的,呃,用的这个实参,哎就是这个耐克嘛,所以说呢,我们通过代理类的对象调这个方法里边呢,就封装了啊,你传进来这个耐克这个方法,同名方法的一个调用。
06:24
来执行。行,这不就完事吗?那朱迪让咱们调的呢?其实都是这个方法。就是这个方法啊,调理方法里边呢调它了,它呢,诶我们是拿的这个耐克来说的,哎这呢就掉了耐克里边这个方法了,哎这呢就叫做一个静态代理,之所以叫静态代理。就是因为咱们这个的背带类和这个带类。啊,咱们写代码的时候,你看都都写死了,D呢,就是编译期间带类和被带类呢,就都确定下来啊,它的一个特点。
07:00
代理类和被代理类在编译期间,哎,就确定下来了,好,这呢叫静态代理写完了啊,那么接下来我们写一个动态代理的例子。
我来说两句