IOC/DI控制反转与依赖注入
IOC/DI控制反转与依赖注入
IOC和DI表现的效果的是一样的只不过对于作用的对象不同,有了不一样的名字。
先用一个现实的例子来说明IOC/DI表现出来的效果。
上图,小冬的有一个吃的功能,营养师要求小冬要吃土豆,这个过程有很大的局限,也就是对于营养师来说,这个营养师只能要求小冬,并且还只能吃土豆,显然一个营养师只能给一个人去搭配营养,并且还然人家只能吃土豆,这样显然不可以!所以对此做个改进:
这一次营养师可以要求任何用能力吃的人,只要有能力吃,也就是实现吃的这一个能力人,就可以被营养师来要求,并且也不是仅仅吃土豆了,任何可以吃的食物都可以,就是实现可以被吃的这个能力都可以!这样营养师就可以要求很多人,吃各种想吃的食物。
对于营养师来说这个过程叫做控制反转,对于有吃这个能力的人叫做依赖注入。
在这个表现过程当中并没有将这个控制反转和依赖注入两个词的真正含义表现出来,这只是一个IOC/DI表现效果。
最近时间比较近,过些时间就去找工作了,起早贪黑的工作时间肯定更紧了,以后帖子发的会慢一些!
就不写代码了,说一下代码是怎么实现的,就是写好两个接口,一个接口有吃这个方法,另一个接口是被吃这个方法,让每个人去实现吃这个接口,并且人里面保存食物的引用,作为成员变量保存在每个人里面(多态),而让各种食物实现被吃这个接口。营养师通过反射获得食物,传递给被要求的每个人去吃,从而达到控制反转的目的,而每个人等着吃就可以了,达到了依赖注入的目的!
就写到这里了,谢谢观看阿童木与小丸子的博客!
IOC/DI控制反转与依赖注入的更多相关文章
- Spring IOC&DI 控制反转和依赖注入
控制反转(Inversion of Control,缩写为IOC),它是把你设计好的对象交给spring控制,而不再需要你去手动 new Object(); 网上对于IOC的解释很多,对程序员而言,大 ...
- 工厂方法模式与IoC/DI控制反转和依赖注入
IoC——Inversion of Control 控制反转 DI——Dependency Injection 依赖注入 要想理解上面两个概念,就必须搞清楚如下的问题: 参与者都有谁? 依赖:谁 ...
- IOC和DI 控制反转和依赖注入
首先要分享的是Iteye的开涛这位技术牛人对Spring框架的IOC的理解,写得非常通俗易懂,以下内容全部来自原文,原文地址:http://jinnianshilongnian.iteye.com/b ...
- IOC(控制反转和依赖注入)之Autofac
Autofac是一款IOC框架,比较于其他的IOC框架,如Spring.NET,Unity,Castle等等所包含的,它很轻量级性能上也是很高的.于是,今天抽空研究了下它.下载地址:http://co ...
- Spring专题2: DI,IOC 控制反转和依赖注入
合集目录 Spring专题2: DI,IOC 控制反转和依赖注入 https://docs.spring.io/spring/docs/2.5.x/reference/aop.html https:/ ...
- 控制反转和依赖注入(对IOC,DI理解+案例)
理解 控制反转说的官方一点就是面向对象编程中的一种设计原则,可以用来减低计算机代码之间的耦合度.其实就是一种设计思想,大概思想就是把设计好的对象交给容器控制,而不是在你内部直接控制. 依赖注入是控制反 ...
- [.net 面向对象程序设计深入](26)实战设计模式——使用Ioc模式(控制反转或依赖注入)实现松散耦合设计(1)
[.net 面向对象程序设计深入](26)实战设计模式——使用IoC模式(控制反转或依赖注入)实现松散耦合设计(1) 1,关于IOC模式 先看一些名词含义: IOC: Inversion of con ...
- Java Web实现IOC控制反转之依赖注入
控制反转(Inversion of Control,英文缩写为IoC)是一个重要的面向对象编程的法则来削减计算机程序的耦合问题,也是轻量级的Spring框架的核心. 控制反转一般分为两种类型,依赖注入 ...
- [.net 面向对象程序设计深入](31)实战设计模式——使用Ioc模式(控制反转或依赖注入)实现松散耦合设计(1)
[.net 面向对象程序设计深入](31)实战设计模式——使用IoC模式(控制反转或依赖注入)实现松散耦合设计(1) 1,关于IOC模式 先看一些名词含义: IOC: Inversion of con ...
随机推荐
- .net mvc项目 ajax
经常在后台用一般处理程序(.ashx)来处理前台的ajax请求 using System; using System.Collections.Generic; using System.IO; usi ...
- Android · SQLiteOpenHelper实例PrivateContactsDBHelper
package privatecontact; import android.content.ContentValues; import android.content.Context; import ...
- 【转载】IIS与asp.net管道
阅读目录 asp.net是什么 HTTP协议 IIS与asp.net asp.net管道 参考资料 我们在基于asp.net开发web程序,基本上都是发布部署到安装了IIS的windows服务器上,然 ...
- uint8_t / uint16_t / uint32_t /uint64_t 是什么数据类型 - 大总结
uint8_t / uint16_t / uint32_t /uint64_t 是什么数据类型 在nesc的代码中,你会看到非常多你不认识的数据类型,比方uint8_t等.咋一看.好像是个新的数据类 ...
- Java NIO之Charset类字符编码对象
介绍 java中使用Charset来表示编码对象 This class defines methods for creating decoders and encoders and for retri ...
- LeetCode222——Count Complete Tree Nodes
Given a complete binary tree, count the number of nodes. Definition of a complete binary tree from W ...
- CountDownTimer
package com.daoge.widget; import java.text.DecimalFormat; import android.os.CountDownTimer; import a ...
- PageHelper
https://pagehelper.github.io/ Mybatis分页插件PageHelper简单使用 SpringBoot之分页PageHelper
- mooc课程mit6.00.1x--problem set1解决方法
counting vowels: 计算字符串中含有元音字母aeiou的数量 char = 'azcbobobegghakl' num = 0 #利用in方法直接查找字符串char中含有的元音字母数量 ...
- Grunt实战 --- 通过nodejs和Grunt实现项目在线构建
本文主要说明,实现在线自动构建项目的实现方法.