00:00
各位同学大家好,下面呢,我们继续来学习此文六框架,在前面的内容中呢,咱们已经完成了此文里边第一个核心部分IOC容器,咱们演示里边基于叉M方式进行并管理,基于注解方式进行并管理,另外咱们基于Java中的反射机制加注解手写了IOC的功能,那这个部分我们就已经完成了。那下面呢,咱们来讲解此文里边的另外一个重要部分,叫做a op,也就是我们说的面向基本编程,在a op里边的,咱们主要从这几个方面给大家来讲解,那我们来做一个基本介绍。首先第一部分咱们做一个场景模拟,我们先写一个简单的例子,然后通过例子引出我们的问题。例子是什么呢?咱们写一个简单的计算器的例子,就做一个加减乘除的功能,然后把例子写完之后,在加减乘除的每个方法中分别添加上日志,就是在你的方法之前,还有之后,每个里边都加上日志,然后这个之后我们会看到代码中的问题,咱们分析问题,然后提出解决方案,这个方案中给大家讲一种新的解决方式,叫做代理模式,咱会分别演示静态代理以及动态代理,然后最终引出咱们的A。
01:27
因为a op的底层就用到了动态代理,包括a up的基本概念,A up的切换术语,然后最后演示基于注解方式在此文里边实验a op,基于叉百配置文件方式,在此文中实验a op。这是我们主要演示的a op中的具体内容,咱会模拟场景讲解底层的原理,最终此文中进行使用。那下面呢,我们先看第一个内容,咱做一个乘景模拟,这个模拟中刚才说的,我们就写一个简单的加减乘除的计算器,然后实现里面的新闻功能,因为这个代码比较简单,所以我就快速来写一下,就是一个加减乘除,那咱们来做一下啊。
02:13
首先第一部分咱们在这里边建一个子模块,那我来做个创建,然后这个模块我起个名字就叫做此文6a up。把这个景创建,这是我们的第一部分,建一个子模块,然后把模块创建之后,在里边呢,我们来建一个计算器的一个接口,包括它的实现类,那下面咱们快速创建下。首先我们先写个包,这个包我起个名字,Com点。At硅谷点上此文六点上A,咱们现在做的是一个计算器的这个简单的例子,就是做一个我们场景的一个模拟,那咱们来写一下,我这里边就加上这么一个包的名字。
03:05
这个名字呢,我就叫example。然后在里边呢,我们首先建一个计算器的接口,就是这个接口,我把它直接复制过来。因为这个代码比较简单,咱就快速复制一下,把计算器的接口做个创建这个calculator,然后创建之后在里边呢来定义最基本的加减乘除的方法,我这里就定义四个方法,分别代表它们的加减乘除,这个单完成,然后完成之后下面呢写上它的一个实现类,我来写一下实现类。写到我们的D位置。我把这部分咱们复制一下。实现类。让实现类来实现我们这个接口。写一下这个接口。然后实现类中分别实现它的加减乘除的四个方法,这个方法比较简单,第一个就是加第二个减,第三个乘,第四个除,那咱就写第一个,剩下几个我从课件中咱们快速复制一下,那我们写一下啊,比如说第一个我写一个叫result,等于这个I。
04:20
加上G就是两个数相加,然后加上之后,最后咱做个输出,输出的话我这里写一下跟课件中为了方便保持一致方法内部result等于咱们最终的这个结果。把这个拿过来。这是我们一个输出,然后最终把这个造的做一个屡退,这就是一个加的这个方法,这咱就完成,完成之后下面还有减乘除三个方法,这一部分咱们给他拿过来。把这个我们给它复制过来。然后大家看啊,现在一个最简单的计算器的这个类就完成了,分别实现了加减乘除四个方法,这个我应该很明确啊,一个简单的实现,然后这个之后呢,比如说咱们现在把计算器的基本功能完成了,我下面呢,我这里边啊想做件事情,大家看我课件中写到的啊,这个咱已经做过了,这很简单,然后往下看,我想做一个什么,创建一个带日志功能的事现类。
05:29
什么意思呢?比如我现在啊,比如说我想这么来做,在我方法之前,我输出一个内容,就告诉他我开始做这个加操作了,然后在计算之后再次输出,告诉他我这个加操作已经完成了,并且结果是多少,然后给他做一个日志的一个输出,在之前和之后分别给它加上日志。那我下面呢,我这么来做,我在里边呢,再来个实现类,因为各位知道啊,一个接口可以有多个实验类,那咱们再来建个实验类,在里边就加一个带日志功能的这么一个实验类。
06:10
我这里写一下啊,首先这个实现类是一个最基本的这个实现类。它就实现了最简单的加减乘除,然后这个时间类也实现了加减乘除,但是它是一个带日志的。这么一个实验类,那咱们在里边我们来看一下啊,这个代码很简单啊,里边逻辑一样,然后在前面做个输出,在后面做个输出,每个里边都这么来做,那我现在把这部分给大家也是复制过来。这是咱们写的一个最基础一个例子啊,这个例子各位自己在看的时候也是直接复制就可以了,因为这例子对于各位来讲应该很简单,咱主要通过它来衍生出或者说来说出我们A里这个场景。那大家看啊,咱们看到就以这个带日志这个代码为例,咱们现在来分析这个代码中它会有什么问题。
07:09
那下面啊,我们来仔细看一下这个代码。大家注意看啊,这个代码中呢,我们现在看,咱们先看一遍啊,第一个做两个数的相加,在之前输出之后输出,中间是你具体的那个核心的业务,就是做相加,然后这是做减之前,之后中间是业务,包括做乘除都是这个过程。这个代码各位应该看明白了啊,然后咱们通过代码咱们看一下它的问题在哪里,那大家各位一起想一下它有什么问题。各位注意啊,我刚才提到我这两个输出代表的是不是日志功能啊,但是大家明确这个日志跟核心的业务是没有什么关系,就是我现在可以这么理解,没有日志这功能是不是能做,有日志后可以让他就是信息输出的更完整,但是没有日志对我核心功能没有影响,但是你看现在问题是什么,我的日志跟核心功能他们是不是混合到一起了,不管你是加减乘除里边是不是都这么做的,那这个时候我们在写代码的时候会有一个问题。
08:22
我们既要关心核心业务,要关注这个日志的一个业务,但是它里边核心业务跟他因为混到一起了,所以造成咱们这里边维护起来是不是特别不方便,又有核心业务,又有日志功能,而咱们肯定想这么做,让我们的核心功能或者核心代码跟我的日志要分离出来,但是目前没有分离,他们是整合到一起了,就给它混到一起来写,这么做不管你是从代码的这个就是。可维护性,而是从代码的各方面来看,它肯定是特别的这种混乱的,所以咱对他要进行一个完善。
09:02
那怎么完善呢?思想很明确,让核心业务或者核心代码和日志的功能给它分离出来,这是我们的实验的思路。那怎么分离,大家看这个实验的方式啊,首先第一个咱发现,因为我现在这个日志是不是具体到了我们的每个方法里边,每个方法中都做了日输出,都是在之前之后,而这个时候如果按照普通方式,比如咱们写一个工具类,然后做这个过程,它好像并不能做到,因为它是渗透到你的方法内部,在核心的方法业务的前后做这个过程,所以咱要把它把核心业务和日志分离出来,用原始方式就没法做到了,这个时候咱需要用到一个新的技术才能实现,那技术是什么呢?我们来看一下啊,就这里说到这个叫代理模式,通过代理模式进行实现。
10:02
这是咱们一个场景的模拟,包括问题的说明给各位啊,再来重复一遍,就是咱们目前在我这个实验类中,咱们核心业务就是这个加减乘除,然后在业务前后都加了日志,这么写的话,造成核心代码跟日志代码混合到一起,维护起来特别不方便,而咱要怎么做让核心代码跟日志分离出来,而怎么分离,因为目前它是渗透到了这个方法的内部,用普通方式分离咱们就没法做到。这个时候我们就说明了一个新的技术,这个技术就叫做代理模式,所以大卖,马上说明代理模式该怎么做这个事情。啊,以上就是一个场景的模拟。
我来说两句