依赖注入_控制反转_依赖反转,这些值5毛钱的概念到底是什么

依赖注入:

在面向对象编程中,BusinessA类想要完成其中的 businessA()函数必须依靠BusinessB类中的businessB()函数配合, 那么此时最符合直觉的做法就是直接在 businessA()函数中 create 一个 BusinessB 调用 businessB()函数.

那么依赖注入就是要求你不能在 businessA() 函数中new出 BusinessB类而是改为其他方式,
类似于通过参数传入businessA(BusinessB bb),
又或是向spring一样使用注解标记下来,之后在将对象一一注入进去(赋值)

直白来讲 就是 对象不再当前函数中创建了 所以对于当前businessA() 函数来说所依赖的对象是从外部注入进来的,也算是一种局部的控制反转

控制反转:

在面向对象的编程中,总是避免不了自己new出对象,就如同上面的例子,不在businessA()函数中new 但是如果我要调用businessA()函数总得在调用的时候create BusinessB 类那么就不得不new了

那么控制反转指的就是,原本是我们也就是程序员控制的对象, 此时反转过来,让代码自己控制对象的create, 这就是控制反转了,只是这些代码通常比较通用,而只要是通用的代码,必有好事者将其封装好,小到工具类,大到框架

直白来讲 就是 对象不用手动创建了 所以创建对象之后在配合依赖入驻概念将对象赋值给依赖其的对象

依赖反转:

在面向对象的编程中高层的代码总是依赖于底层的代码,例如常见的三层架构中的 controller层总是会直接依赖于service 间接依赖于Repository 那么此时当我们的 service 的接口有所变更那么势必造成 controller层的的代码变更, (其实我们的service层来说一般是基于接口,所以只要不改动接口那么对于controller层面的影响还是可控范围内的)

那么依赖反转指的就是 我们controller与service中的那一层接口了(说是接口其实还不太准确), 就象我们的 tomcat 与 web项目 按照正常来说 高层代码依赖底层代码这是很正常的,但是 我们的tomcat却并不依赖任何的web项目,我们的web项目也不会依赖于tomcat, 它们都是实现 java提供的servlet标准

直白来讲 那就是高层代码不依赖底层实现, 底层实现不依赖高层特性,改为依赖中间的原则

发布了41 篇原创文章 · 获赞 225 · 访问量 8748

猜你喜欢

转载自blog.csdn.net/weixin_43843042/article/details/103734037