Java中高级核心知识全面解析(1),尚学堂Java百度云资源

IOC (Inversion of control )控制反转/反转控制。它是一种思想不是一个技术实现。描述的是:Java开发领域对象的创建以及管理的问题。

例如:现有 类A依赖于类B

传统的开发方式:往往是在类A中手动通过new关键字来 new 一个B的对象出来

使用IOC思想的开发方式: 不通过new关键字来创建对象,而是通过IOC容器(Spring 框架) 来帮助我们实例化对象。我们需要哪个对象,直接从IOC容器里面过去即可。

从以上两种开发方式的对比来看:我们 “丧失了一个权力” (创建、管理对象的权力),从而也得到了一个好处(不用再考虑对象的创建、管理等一系列的事情)

1.为什么叫控制反转

控制: 指的是对象创建(实例化、管理)的权力

反转: 控制权交给外部环境(Spring框架、IOC容器)

二、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 和 DI 描述的是同一件事情(对象实例化以及依赖关系的维护),只不过角度不同。

IOC (Inversion of control ) 控制反转/反转控制。是站在对象的角度,对象实例化以及管理的权限(反转)交给了容器。

DI (Dependancy Injection)依赖注入。是站在容器的角度,容器会把对象依赖的其他对象注入(送进去)。例如:对象A 实例化过程中因为声明了一个B类型的属性,那么就需要容器把B对象注入到A中。

四、什么是AOP

AOPAspect oriented programming 面向切面编程,AOP是 OOP(面向对象编程)的一种延续,下面我们先看一个OOP的例子。

例如:现有三个类,HorsePigDog,这三个类中都有 eat 和 run 两个方法。

通过OOP思想中的继承,我们可以提取出一个 Animal 的父类,然后将 eat 和 run 方法放入父类中,Horse、Pig、Dog通过继承Animal类即可自动获得 eat 和 run 方法。这样将会少些很多重复的代码。

OOP编程思想可以解决大部分的代码重复问题。但是有一些问题是处理不了的。比如在父类Animal 中的多个方法的相同位置出现了重复的代码,OOP就解决不了。

COPY
 /** 
 * 动物父类 
  */ 
public class Animal { 

	/** 身高 */ 
	private String height; 
	
	/** 体重 */ 
	private double weight; 
	
	public void eat() { 
		// 性能监控代码 
		long start = System.currentTimeMillis(); 


### 最后在出来放一波福利吧!希望可以帮助到大家!

> [**戳此获取免费学习资料**](https://gitee.com/vip204888/java-p7)

千千万万要记得:多刷题!!多刷题!!

之前算法是我的硬伤,后面硬啃了好长一段时间才补回来,算法才是程序员的灵魂!!!!

篇幅有限,以下只能截图分享部分的资源!!

(1)多线程(这里以多线程为代表,其实整理了一本JAVA核心架构笔记集)

![image](https://img-blog.csdnimg.cn/img_convert/524391390f49058e839b418c1be534e2.png)2)刷的算法题(还有左神的算法笔记)

![image](https://img-blog.csdnimg.cn/img_convert/f81baeeb2cbdd0ab8151a80025fa4df0.png)3)面经+真题解析+对应的相关笔记(很全面)

![image](https://img-blog.csdnimg.cn/img_convert/d969758c783a73c062e3352f0b3dcf13.png)4)视频学习(部分)

> ps:当你觉得学不进或者累了的时候,视频是个不错的选择

![image](https://img-blog.csdnimg.cn/img_convert/bfc6313148b65c8b5546bbdf1a9b740b.png)

其实以上我所分享的所有东西,有需要的话我这边可以免费分享给大家,但请一定记住获取方式:[点击这里前往免费获取](https://gitee.com/vip204888/java-p7)

我所分享的所有东西,有需要的话我这边可以免费分享给大家,但请一定记住获取方式:[点击这里前往免费获取](https://gitee.com/vip204888/java-p7)

在这里,最后只一句话:祝大家offer拿到手软!!
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值