PID&IOC&DI学习及实战-系统学习七

简介: 之前一直对于spring核心的IOC以及相关的PID、DI概念混乱,终于在有了设计模式主要是工厂模式的前提下把这几个概念搞明白了

一、背景介绍


之前一直对于spring核心的IOC以及相关的PID、DI概念混乱,终于在有了设计模式主要是工厂模式的前提下把这几个概念搞明白了


阅读这篇文章您会了解到小编在进行PID&IOC&DI学习及实战过程中的思路、总结以及产生的问题,希望能够和读者碰撞出更多的"车祸"。


二、学习思路


1.查询概念解释

2.宏观对比

3.示例需求

4.示例实现

5.spring实现思路


三、学习过程


1.查询概念解释


1.1.依赖:依靠别人或事物而不能自立或自给称为依赖

1.2.倒置:倒置的基本意思是颠倒位置、次序或关系的意思,在植物中指的是某一器官变成与原来的位置和方向相反的状态


1.3.控制:指为了确保组织内各项计划按规定去完成而进行的监督和纠偏的过程

1.4.反转:指转向相反的方向;照片图像的色调或明暗的处理


1.5.注入:1.泵入、灌入或流入。2.以气息传送。3.使产生对某物的印象或得到逐渐灌输。


1.6.控制反转(Inversion of Control,缩写为IoC),是面向对象编程中的一种设计原则,可以用来减低计算机代码之间的耦合度。其中最常见的方式叫做依赖注入(Dependency Injection,简称DI),还有一种方式叫“依赖查找”(Dependency Lookup)。通过控制反转,对象在被创建的时候,由一个调控系统内所有对象的外界实体将其所依赖的对象的引用传递给它。也可以说,依赖被注入到对象中。


2.宏观对比


20210613170141165.png


3.示例需求


3.1.您刚接手一个项目,这个项目经过了无数人之手有着10年之久的历史,其中的类有成千上万;用户提出了一个需求,在实现过程中您需要运用中间的某一个类的实例。


假设我们没有spring的ioc工厂,那么您就需要将该类及以下的所有的类之间的关系都梳理明白,这将是一个多么巨大且高风险的任务?


有了spring的ioc工厂,我们的工作又会变成什么样子呢?


3.2.我们将上面的大需求用制造汽车的例子来理解:

3.2.1.传统的汽车设计;先设计一个轮胎——>再根据轮胎设计轮毂——>再根据轮毂设计车架——>最终根据车架设计出来汽车

3.2.1.1.此时客户提出要将轮胎的大小调大一号,调完了轮胎,由于轮毂依赖轮胎轮毂也得调整,由于车架依赖轮毂车架也得调整,由于汽车依赖于车架汽车也得调整

3.2.2.依赖倒置思想下汽车设计:先设计汽车——>根据汽车设计车架——>根据车架设计轮毂——>根据轮毂设计轮胎

3.2.2.1.此时客户提出要将轮胎的大小调大一号,我们只需要将轮胎的型号做调整即可


4.示例实现(为了宏观效果更加明确下面的示例都是以图的方式进行的展示)


4.1.传统的汽车设计


20210613170516450.png

2021061317074218.png


4.2.依赖倒置思想下汽车设计


20210613170637212.png


20210613170811354.png


5.spring实现思路


下面是spring的IOC工厂做的事情,具体源码的实现会在后续的博文中做详细总结


20210613170832586.png

20210613171041797.png


四、学习总结


收获:

1.对于PID&IOC&DI有了更加深入的理解

2.对于知识的层层递进(UML->设计模式->框架学习)学习有了更加明确的方式方法提出的问题:

1.spring的IOC都遵循了哪些设计原则?具体源码中是如何体现的?

2.spring的IOC都运用了那些设计模式?具体源码中是如何体现的?

3.spring中其它模块和IOC的关系是什么?


五、升华


打破认知的边界、突破思维的局限,原来编程中有这么多优秀的理论思想及实现内容;并且坚信它们之前有着强有力的逻辑关系;更加坚信我可以攻陷这一座座城池。


参考文章:Spring IoC有什么好处呢?UML的六种关系-系统学习四简单工厂VS工厂方法&手写自动化工厂——系统学习六

相关文章
|
7月前
|
XML Java 开发者
Sping基础篇----掌握Sping的控制反转/依赖注入的概念【实战案例总结】
Sping基础篇----掌握Sping的控制反转/依赖注入的概念【实战案例总结】
73 4
|
7月前
|
Java 容器 Spring
Spring-依赖注入(DI)入门案例及bean基础配置
Spring-依赖注入(DI)入门案例及bean基础配置
78 0
|
XML Java 应用服务中间件
面试官问我咋实现Spring框架IOC和DI好吧打趴下,深度解析手动实现Spring框架的IOC与DI功能
面试官问我咋实现Spring框架IOC和DI好吧打趴下,深度解析手动实现Spring框架的IOC与DI功能
80 0
|
2月前
|
存储 开发框架 Java
什么是Spring?什么是IOC?什么是DI?IOC和DI的关系? —— 零基础可无压力学习,带源码
文章详细介绍了Spring、IOC、DI的概念和关系,解释了控制反转(IOC)和依赖注入(DI)的原理,并提供了IOC的代码示例,阐述了Spring框架作为IOC容器的应用。
37 0
什么是Spring?什么是IOC?什么是DI?IOC和DI的关系? —— 零基础可无压力学习,带源码
|
3月前
|
XML Java 开发者
经典面试---spring IOC容器的核心实现原理
作为一名拥有十年研发经验的工程师,对Spring框架尤其是其IOC(Inversion of Control,控制反转)容器的核心实现原理有着深入的理解。
143 3
|
6月前
|
前端开发 Java 程序员
图书管理系统调整——修改注解(引入IoC、DI思想)
图书管理系统调整——修改注解(引入IoC、DI思想)
34 2
|
6月前
|
算法
技术笔记:PID控制器开发笔记之十一:专家PID控制器的实现
技术笔记:PID控制器开发笔记之十一:专家PID控制器的实现
|
Java Spring 容器
面试官问我咋实现Spring框架IOC和DI好吧打趴下,深度解析手动实现Spring框架的IOC与DI功能2
面试官问我咋实现Spring框架IOC和DI好吧打趴下,深度解析手动实现Spring框架的IOC与DI功能2
51 0
|
7月前
|
XML Java 数据格式
Spring5源码(15)-IoC容器启动过程简析及XmlBeanFactory初始化
Spring5源码(15)-IoC容器启动过程简析及XmlBeanFactory初始化
71 1
|
Java 测试技术 容器
一篇文章解释清楚IOC和DI
一篇文章解释清楚IOC和DI