tnblog
首页
视频
资源
登录

依赖注入和控制反转(自己的理解)

7620人阅读 2020/4/9 16:30 总访问:451236 评论:0 收藏:0 手机
分类: 随笔
  1. hello 大家好 今天要给大家分享的是自己对依赖注入和控制反转 的理解
  2. 前面也有小伙伴们提到并做出了详细的讲解  但是自己还是看得有点懵 
  3. 于是就自己去尝试了一遍 会的就略过 如果有说的不对的地方欢迎大家进行指正


  1. 在大多数面向对象编程的过程中,在调用一个对象时,先要实例化这个类,然后才能调用这个对象。如果在写这个类时,调用了很多其他的类,类与类之间相互“依赖”,这就有了极大的耦合,并且在实例化对象时,可能会实例化许多不必要的对象浪费了资源。
  2. 为了解决这个问题,可以把所有依赖的对象,都注入到一个容器(IOC容器),这样以后,所有依赖有关的对象都可以从容器直接获取(解析),容器管理者对象的创建与销毁。IOC这个容器它是一个实现了IOC的框架。IOC 是控制反转 ,简单来说,a依赖b,但a不控制b的创建和销毁,仅使用b,那么b的控制权交给a之外处理,这叫控制反转(IOC),而a要依赖b,必然要使用b的instance,那么b注入到a 有如下几种方式:
  3. 1、通过a的接口,把b传入;
  4. 2、通过a的构造,把b传入;
  5. 3、通过设置a的属性,把b传入;
  6. 这个过程叫依赖注入(DI)。(很奇妙,依赖注入与控制反转相辅相成)
  7. 举个栗子:
  8.  public class A {
  9.     private B b;
  10.     public A(B b) {
  11.         this.b=b;
  12.     }
  13.  }
  14. 那么如何去new呢,定义一个类C,在C中调用A的构造方法的时候new B();即
  15. public class C{
  16.     @Test
  17.     public void Use(){
  18.         A c=new A(new B());
  19.     }
  20.  }
  21. 这样的话,就实现了一个简单的依赖注入,A类与B类
  22. 每日一笑,今天你笑了吗?
  23. 1.我是一个苦b的程序员,
  24. 今晚加班到快通宵了,
  25. 困得快睁不开眼了,
  26. 女上司很关心,
  27. 问我要不要吃宵夜。
  28. 我没好气地说,
  29. 宵夜就算了,
  30. 能让我睡一觉就行了。
  31. 女上司红着脸说了句讨厌啊,
  32. 然后坐在我身边不动,好像距离我很近,
  33. 搞得我很紧张,难道她发现我的程序出了bug?
  34. 2.搞IT太辛苦了,想换行怎么办?”
  35. “敲一下Enter键。”
  36. 美好的时光总是短暂的  
  37. 本期就到这里了喜欢的话点过关注吧 
  38. 我是小付 下期见!
评价

C ?、?? 问号和2个问号的用法类型?、对象?

C# ?C# ???:单问号1.定义数据类型可为空。可用于对int,double,bool等无法直接赋值为null的数据类型进行null的赋值如这...

Python实例 1-日志抓取处理 补错附日志小技巧

有时候数据出了问题,可以从日志中恢复数据(如果你没记日志..没备份..→_→..)一、日志展示介绍个平常自己用的小方法,如...

C 数组拆分泛型

主要用到了泛型。泛型是c#2.0的一个新增加的特性,它为使用c#语言编写面向对象程序增加了极大的效力和灵活性。不会强行对值...

MySQL 视图的增删改 查

要显示视图的定义,需要在SHOWCREATEVIEW子句之后指定视图的名称, 我们先来创建几张表,完事后在进行演示:--用户信息表...

使用NPOI导出excel包括图片

Excl模板导出相信我们都会,那么模板上要导出图片呢?嗯~还是来个例子:准备工作:首先要引用NPOI包:然后获取数据集(我这...

ajaxSubmit异步上传图片嘘,外面都是假的

引用代码<scriptsrc="/Scripts/jquery.form.js"></script>js就在旁边img链接中,只不过大小为0x0,...

.NET MVC 使用百度编辑器详细教程:1配置编辑器

一、什么是百度编辑器百度编辑器UEditor是由百度web前端研发部开发一款应用于网站的编辑器,具有轻量,可定制,注重用户体...

使用jquery操作元素的css样式获取、修改等等

使用jquery操作元素的css样式(获取、修改等等) //1、获取和设置样式 $("#tow").attr("class")...

.net辗转java系列视野

.net辗转java系列(一)视野.net系java系其它语言C#Java框架.net Framework Standardjava se.net corejava eejave meJava S...

.NET MVC json对象或者json对象数组的序列化和反序列化

1、用JSON.stringify()将对象stuarr或者json数组stuarr序列化成字符串,然后提交给后台。$.post("/home/DoUpdate&quot...

.NET MVC json对象或者json对象数组的序列化和反序列化

1、用JSON.stringify()将对象stuarr或者json数组stuarr序列化成字符串,然后提交给后台。$.post("/home/DoUpdate&quot...

mui框架-移动端跳转以及传值的简单方法修改解决方法

纠结了两天的MUI跳转的问题,终于解决了 ,现在分享给大家,希望大家有什么坑的解决也给我分享分享 哈哈,废话不多说,上代...

MVC全局异常处理错误日记

1、在Filter文件夹中创建一个IsExceptionFilter类(类名随意取)2、使用3、在访问的页面控制器中添加几个错误4、在IsExcept...

MVC全局异常处理错误日记

1、在Filter文件夹中创建一个IsExceptionFilter类(类名随意取)2、使用3、在访问的页面控制器中添加几个错误4、在IsExcept...

Hbuilder打包APP的教程会操作的略过

首先项目必须是APP端的,可能讲解有点啰嗦,讲解准备的工具:HBuilderX(其他版本也可以,这里用X版本来讲解)、待测试手机...
每一段路程,都是一种领悟
排名
10
文章
100
粉丝
17
评论
34
ICP备案 :渝ICP备18016597号-1
网站信息:2018-2025TNBLOG.NET
技术交流:群号656732739
联系我们:contact@tnblog.net
公网安备:50010702506256
欢迎加群交流技术
神即道,道即法,道法自然,如来。