首页 > 其他分享 >IOC控制反转

IOC控制反转

时间:2023-08-16 21:11:44浏览次数:35  
标签:容器 IoC 依赖 DI 反转 控制 IOC

IOC控制反转,是一种程序设计思想。 在了解IOC控制反转我们首先先了解以下几个概念

1、理解DIP(依赖反转原则)

2、理解DI设计模式

2、DI(依赖注入)

3、IOC容器

一、环境讲解

首先我们要先理解其中我们的IOC、和DIP只是一种编程中的原则,是按照这套原则进行的操作,然后DI(依赖性注入)是我们在设计项目中按照IOC的一种设计模式,最后按照IOC的原则和
设计模式我们还需要一个框架就是指我们的IOC容器了

二、DIP(依赖反转原则)

依赖反转原则(Dependency inversion principle,DIP)是指一种特定的解耦形式,使得高层次的类不依赖于低层次的类的实现细节,依赖关系被颠倒(反转),从而使得低层次类依赖于高层次类的需求抽象。

 

低层次的类,就比如我们这个类中我们只编写了类似于增删改查等一系列的操作的类,就例如你有一个编写的Base.cs类这个类中包含了你写的基础添删改查操作,你要使用的功能类也就是objectM在传统代码编程中是依赖于如上图objectE类然后使用其中的方法来实现功能,可是这有背我们的能尽量降低耦合度,所以我们可以进行,把objectM所需的底层方法抽象定义成一个接口(ointerfaceByM)通过继承的方式继承低层次的类实现低层次的类依赖于我们高层次的类所需定义的接口,而实现控制反转。

二、IOC控制反转

1、在C#中我们使用IOC控制反转这一套来进行编程操作的主要目的就是降低项目与项目之间的耦合性(解耦),从而使项目具有更高的维护性和低耦合
2、在IOC中我们的设计概念是反转各个组件,其中牵扯到了一个概念:”控制权反转“,那么什么是控制权反转呢:就例如——廖雪峰《Ioc原理》中:即从应用程序转移到了IoC容器,所有组件不再由应用程序自己创建和配置,而是由IoC容器负责,这样,应用程序只需要直接使用已经创建好并且配置好的组件,

三、DI注入

依赖注入(DI)设计模式是一种软件设计模式,它允许我们通过反转依赖对象的创建来开发松散耦合的代码。依赖注入是减少软件组件之间紧密耦合的好方法。DI还使我们能够更好地管理软件中的未来变化和其他复杂性,

四、IOC容器

  1、IoC容器是一个很好的框架,可以在整个应用程序中创建依赖项,并在需要时自动注入它们,这样我们作为软件程序员就不必在其中投入额外的时间和精力。它根据请求自动创建必要的对象,并在任何需要时自动插入它们。DI容器帮助我们以简单明了的方式管理应用程序中的依赖关系。

  2、Ioc容器的生命周期:

  Scoped作用域(常用的--每次请求,在请求这个过程当中一直到相应使用的都是相同的实例)

      Singletion 单例(全局唯一)

  Transient 瞬态(用完马上释放掉,下次还是用新的实例)

五、小结

依赖倒置原则(DIP):设计模式六大原则之一,是一种软件架构设计原则

控制反转(IoC):一种软件设计原则,上层对下层的依赖(即底层模块的获得)交给第三方。

依赖注入(DI):实现IoC的一种方式、手段。、

IoC容器:依赖注入的框架,用来映射依赖,管理对象的创建和生存周期。

 

 

 

 

标签:容器,IoC,依赖,DI,反转,控制,IOC
From: https://www.cnblogs.com/syjtiramisu/p/17636204.html

相关文章

  • 【转载】c++调用win32API控制打印机打印
    原文:https://blog.csdn.net/cheng448208985/article/details/55510687win32实现将原始数据发送给打印机1、调用OpenPrinter()打开打印机,获取打印机句柄。2、初始化DOCINFO打印机结构体。3、调用StartDocPrinter()表明应用程序准备发送文档数据给打印机。4、调用StartPagePrin......
  • 绿色节能智能照明控制系统在医院综合楼中的运用
    安科瑞陈沁雨摘要:医疗建筑的照明系统功能多、能耗高,为了响应国家“碳达峰、碳中和”目标,需要进行节能降耗。医院综合楼现有照明系统能耗高,且整体的管理控制存在问题,智能照明系统的运用,在一定程度上解决了这些问题。智能照明系统的运用,在保障医院环境的同时,还能够节约电能。因此,文章......
  • Docker 网络和资源控制
    Docker网络保证容器提供服务,确保网络的通信。资源控制确保宿主机不被容器抢占所有资源。目录一、Docker网络实现原理二、Docker的网络模式三、CPU资源控制四、总结     一、Docker网络实现原理1.Docker网络实现原理(1)Docker使用Linux桥接,......
  • IOC和DI
    IOC:控制反转是一种设计原则,把自己创建对象的过程交给Spring容器帮我们创建,在这个过程中常用的注解有4个:@component、@controller、@service、@repository(不常用)对象有两种模式单例,每次的对象都是那一个,完全由Spring容器来全权管理多例,每次都是一个全......
  • Java的流程控制(选择结构语句 if ~ switch &循环结构语句dowhile ~ for)
    前言程序执行的控制流程分为三种,也称为三种结构,分别是:顺序结构、和循环结构。顺序结构指的是程序执行按照代码的编写顺序,依次从上往下开始执行,直到程序结束。程序的执行默认是顺序执行的一、选择结构语句1.if条件语句一个if语句包含一个布尔表达式和一条或多条语句if(布尔表达......
  • thinkphp控制器名称命名相关
    thinkphp控制器名称命名相关1,首字母大写2,后续字母不能有大写。比如StudentController就会报错。换成Studentcontrolloer就可以过。后续:经过二次学习,看了资料,控制器命名,第二个单词如果是大写字母,是可以访问的,只不过访问时,第二个大写字母前要加一个下划线。例如,你的控制器名是Stud......
  • 《安富莱嵌入式周报》第320期:键盘敲击声解码, 军工级boot设计,开源CNC运动控制器,C语言
    周报汇总地址:http://www.armbbs.cn/forum.php?mod=forumdisplay&fid=12&filter=typeid&typeid=104 视频版:https://www.bilibili.com/video/BV1Cr4y1d7Mp/1、键盘敲击声解码https://arxiv.org/abs/2308.01074键盘敲击声被解码的话,我们使用键盘输入密码将被方便的解码出......
  • Kubernetes Deployment控制器创建pod k8s
    Deployment因为RCRS无法支持动态更新Deployment支持动态更新无状态应用管理Deployment控制器下面就是ReplicaSet当我们创建Deployment的时候实际上会给我们创建一个同名的ReplicaSet控制器,这个RS上面是我们对应的pod节点更新的时候,Deployment是支持自动更新的,RS也可以更新,就是......
  • IOC(控制反转)
    1、通过下面这个案例来理解IOC这种思想创建一个项目,建一个dao层的包。在包下建立一个UserDao接口,里面写一个方法。再写这个接口的几个实现类,每个实现类中的方法实现不同的效果。建一个service层的包,下面写一个UserService接口,然后写接口实现类,实现类就是调用Dao层的方法(用以下......
  • 分布式版本控制系统(一)
    分布式版本控制系统(一)目录分布式版本控制系统(一)1、Git、Github、Gitlab的区别2、Git与SVN区别3、Git工作流程4、Git基本概念5、Git客户端安装使用5.1git-server安装配置5.2git-client配置免密登录git服务器5.3文本编辑器5.4差异分析工具5.5查看配置信息5.6常用的git......