赞
踩
首先声明:IOC & AOP不是Spring提出来的,它们在Spring之前其实已经存在了,只不过当时更加偏向于理论。 Spring 在技术层次将这两个思想进行了很好的实现。
IOC (Inversion of control )控制反转/反转控制。它是一种思想不是一个技术实现。描述的是:Java开发领域对象的创建以及管理的问题。
例如:现有 类A依赖于类B
传统的开发方式:往往是在类A中手动通过new关键字来 new 一个B的对象出来
使用IOC思想的开发方式: 不通过new关键字来创建对象,而是通过IOC容器(Spring 框架) 来帮助我们实例化对象。我们需要哪个对象,直接从IOC容器里面过去即可。
从以上两种开发方式的对比来看:我们 “丧失了一个权力” (创建、管理对象的权力),从而也得到了一个好处(不用再考虑对象的创建、管理等一系列的事情)
控制: 指的是对象创建(实例化、管理)的权力
反转: 控制权交给外部环境(Spring框架、IOC容器)
IOC 主要解决的是对象之间的耦合问题。
例如:现有一个针对User的操作,利用 Service 和 Dao 两层结构进行开发
在没有使用IOC思想的情况下,Service 层想要使用 Dao层的具体实现的话,需要通过new关键字在 UserServiceImpl 中手动 new出 IUserDao 的具体实现类 UserDaoImpl(不能直接new接口类)。
很完美,这种方式也是可以实现的,但是我们想象一下如下场景:开发过程中突然接到一个新的需求,针对对IUserDao 接口开发出另一个具体实现类。因为Server层依赖了IUserDao的具体实现,所以我们需要修改UserServiceImpl中new的对象。如果只有一个类引用了IUserDao的具体实现,可能觉得还好,修改起来也不是很费力气,但是如果有许许多多的地方都引用了IUserDao的具体实现的话,一旦需要更换IUserDao的实现方式,那修改起来将会非常的头疼。
使用IOC的思想,我们将对象的控制权(创建、管理)交有IOC容器去管理,我们在使用的时候直接向IOC容器 “要” 就可以了
IOC 和 DI 描述的是同一件事情(对象实例化以及依赖关系的维护),只不过角度不同。
IOC (Inversion of control ) 控制反转/反转控制。是站在对象的角度,对象实例化以及管理的权限(反转)交给了容器。
DI (Dependancy Injection)依赖注入。是站在容器的角度,容器会把对象依赖的其他对象注入(送进去)。例如:对象A 实例化过程中因为声明了一个B类型的属性,那么就需要容器把B对象注入到A中。
AOP:Aspect oriented programming
面向切面编程,AOP是 OOP(面向对象编程)的一种延续,下面我们先看一个OOP的例子。
例如:现有三个类,Horse
、Pig
、Dog
,这三个类中都有 eat 和 run 两个方法。
通过OOP思想中的继承,我们可以提取出一个 Animal 的父类,然后将 eat 和 run 方法放入父类中,Horse、Pig、Dog通过继承Animal类即可自动获得 eat 和 run 方法。这样将会少些很多重复的代码。
OOP编程思想可以解决大部分的代码重复问题。但是有一些问题是处理不了的。比如在父类Animal 中的多个方法的相同位置出现了重复的代码,OOP就解决不了。
COPY
/**
/** 身高 */
private String height;
/** 体重 */
private double weight;
public void eat() {
自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。
深知大多数Java工程师,想要提升技能,往往是自己摸索成长或者是报班学习,但对于培训机构动则几千的学费,着实压力不小。自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!
因此收集整理了一份《2024年Java开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。
既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上Java开发知识点,真正体系化!
由于文件比较大,这里只是将部分目录截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且会持续更新!
如果你觉得这些内容对你有帮助,可以扫码获取!!(备注Java获取)
按照上面的过程,4个月的时间刚刚好。当然Java的体系是很庞大的,还有很多更高级的技能需要掌握,但不要着急,这些完全可以放到以后工作中边用别学。
学习编程就是一个由混沌到有序的过程,所以你在学习过程中,如果一时碰到理解不了的知识点,大可不必沮丧,更不要气馁,这都是正常的不能再正常的事情了,不过是“人同此心,心同此理”的暂时而已。
“道路是曲折的,前途是光明的!”
《一线大厂Java面试题解析+核心总结学习笔记+最新讲解视频+实战项目源码》,点击传送门即可获取!
厂Java面试题解析+核心总结学习笔记+最新讲解视频+实战项目源码》,点击传送门即可获取!**
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。