IOC/DI控制反转与依赖注入

IOC和DI表现的效果的是一样的只不过对于作用的对象不同,有了不一样的名字。

先用一个现实的例子来说明IOC/DI表现出来的效果。

上图,小冬的有一个吃的功能,营养师要求小冬要吃土豆,这个过程有很大的局限,也就是对于营养师来说,这个营养师只能要求小冬,并且还只能吃土豆,显然一个营养师只能给一个人去搭配营养,并且还然人家只能吃土豆,这样显然不可以!所以对此做个改进:

这一次营养师可以要求任何用能力吃的人,只要有能力吃,也就是实现吃的这一个能力人,就可以被营养师来要求,并且也不是仅仅吃土豆了,任何可以吃的食物都可以,就是实现可以被吃的这个能力都可以!这样营养师就可以要求很多人,吃各种想吃的食物。

对于营养师来说这个过程叫做控制反转,对于有吃这个能力的人叫做依赖注入。

在这个表现过程当中并没有将这个控制反转和依赖注入两个词的真正含义表现出来,这只是一个IOC/DI表现效果。

最近时间比较近,过些时间就去找工作了,起早贪黑的工作时间肯定更紧了,以后帖子发的会慢一些!

就不写代码了,说一下代码是怎么实现的,就是写好两个接口,一个接口有吃这个方法,另一个接口是被吃这个方法,让每个人去实现吃这个接口,并且人里面保存食物的引用,作为成员变量保存在每个人里面(多态),而让各种食物实现被吃这个接口。营养师通过反射获得食物,传递给被要求的每个人去吃,从而达到控制反转的目的,而每个人等着吃就可以了,达到了依赖注入的目的!

就写到这里了,谢谢观看阿童木与小丸子的博客

最新文章

  1. CRC32
  2. 一些关于angularJS的自己学习和开发过程中遇到的问题及解决办法
  3. Redis ConnectionException
  4. u-boot-2010.09移植(B)
  5. android中将EditText改成不可编辑的状态
  6. Android 6.0 权限管理
  7. C++ Data Member内存布局
  8. 【C++】error C4146: 一元负运算符应用于无符号类型,结果仍为无符号类型
  9. Scrum 学习笔记
  10. [python]百度语音rest api
  11. POJ 2155 Matrix (D区段树)
  12. Windows 10忘记登录密码不用怕,系统U盘/光盘轻松重置
  13. JavaScript的案例(数据校验,js轮播图,页面定时弹窗)
  14. redis编译安装
  15. WAS 忘记密码
  16. BZOJ 3555: [Ctsc2014]企鹅QQ
  17. [原][译][physX]phsyX3.3.4官方文档物理引擎基本概念和例子介绍
  18. 【刷题】BZOJ 4031 [HEOI2015]小Z的房间
  19. 【转】十个经典的C开源项目代码
  20. Rails 5 Test Prescriptions 第5章 Testing Models

热门文章

  1. 我的IT之路
  2. DataTable行处理
  3. (十)jQuery对表单、表格的操作
  4. JS 的引用赋值与传值赋值
  5. mysql中把空值放在最后,有值的数据放在前面
  6. java自定义before和after
  7. 30天自制操作系统(三)进入32位模式并导入C语言
  8. HDFS源码分析数据块复制监控线程ReplicationMonitor(一)
  9. PythonCookBook笔记——函数
  10. Open-sourcing LogDevice, a distributed data store for sequential data