展开对IoC和Aop的解释
- 什么是IoC?
- Ioc解决了什么问题?
- IoC和DI的区别?
- 什么是AOP?
- AOP解决了什么问题?
- AOP为什么叫切面编程?
1,什么是IoC?
Ioc控制反转。它是一种思想不是一种技术实现。描述的是:Java开发领域对象的创建以及管理的问题。
例如:有A类依赖B类
- 不用IOC思想开发方式:往往是在类A中手动通过new关键字来new一个B类对象出来。
- 使用IOC思想的开发方式:不通过new关键字来创建对象,而是通过IOC容器来帮助我们实例化对象。我们需要哪个对象,直接从IOC的容器里面过去就行
控制反转的含义:
- 控制:指的是对象创建(实例化、管理)的权力
- 反转:控制权交给外部环境(Spring 框架、Ioc容器)
IOC解决了什么问题
IOC的思想就是两方之间不互相依赖,由第三方容器来管理相关资源。
- 对象之间的耦合度或者说依赖程度降低;
- 资源变得容易管理
Ioc的DI的区别
DI:依赖注入:描述的是同一件事,只不过角度不一样。
什么是AOP
AOP面向切面编程AOP是OOP的延续,从OOP说起。OOP三大特征:封装、继承和多态OOP是一种垂直继承体系。
OOP编程思想可以解决大多数的代码重复问题,但是有一些情况是处理不了的,比如在顶级父类Animal中的多个方法中相同位置出现重复代码,OOP就解决不了。
横切逻辑代码存在什么问题:
- 横切代码重复问题
- 横切逻辑代码和业务代码混在一起,代码臃肿,维护不方便
AOP将横切逻辑代码和业务逻辑代码分析
代码拆分容易,那么如何在不改变原有业务逻辑的情况下,悄⽆声息的把横切逻辑代码应⽤到原有的业务逻辑中,达到和原来⼀样的效果,这个是⽐较难的。
AOP在解决什么问题?
在不改变原有业务逻辑情况下,增强横切逻辑代码,根本上解耦合,避免横切逻辑代码重复
为什么叫做面向切面编程?
- 切:指的是横切逻辑,原有业务逻辑代码我们不能动,只能操作横切逻辑代码,所以面向横切逻辑
- 面:横切逻辑代码往往要影响的是很多个方法,每个方法都如同一个点,多个点构成一个面,有一个面的概念在里面。