1.什么是IOC与DI

IOC(Inversion of Control):其思想是反转资源获取方向,传统的资源查找方式要求组件想容器发起请求查找资源,作为回应,容器适时的返回资源,而应用了IOC之后,则是容器主动地将资源推送给它所管理的组件,组件所要做的仅是选择一种合适的方式来接受资源,这种行为也被称为查找的被动形式DI(DependencyInjection)-IOC的另一种表述方式:即组件以一些预先定义好的方式(例如setter方法)接受来自如容器的资源注入,相对于IOC而言,这种表述更直接。

2.IOC的发展过程

需求:生成HTML或PDF格式的不同类型的报表

IOC前生---分离接口与实现:PDF报表类和HTML报表类分别去实现ReportGenerator接口,实现了接口与实现分离。

IOC前生---采用工厂设计模式:利用工厂类去创建PDF报表类和HTML报表类,这样Service类只需要知道使用的是哪个接口,并且调用工厂类即可,不需要引入,具体的实现类,使我们的代码变得更加灵活。

IOC前生---采用控制反转:使用容器之后,Service类只需要知道要创建的对象是属于哪一个接口,在使用时,容器会为Service创建相应的bean,并且主动将资源推送给Service类。

最新文章

  1. error C2664: 'BOOL (PCERT_SELECT_STRUCT_A)' : cannot convert parameter 1 from 'CERT_SELECT_STRUCT *' to 'PCERT_SELECT_STRUCT_A'
  2. 01从c到c++
  3. ES6笔记(1) -- 环境配置支持
  4. FingerprintJS - 在浏览器端实现指纹识别
  5. 【Visual Lisp】Visual Lisp属性与方法
  6. mssql server提示无权限
  7. golang 依赖控制反转(IoC)
  8. 自定义标签体、MVC
  9. VS快捷键简单记录
  10. 非滤波单目视觉slam笔记1
  11. SSH远程登录密码尝试
  12. 利用Python进行数据分析——Numpy基础:数组和矢量计算
  13. Flexbox(弹性盒模型)完全指南
  14. mysql的event(事件)用法详解
  15. ViewBag赋值Html格式值
  16. (一):C++分布式实时应用框架----整体介绍
  17. 跟随我在oracle学习php(9)
  18. mysql常用修改创建语句
  19. linux下的c/c++调试器gdb
  20. 使用PD进行数据库建模时的问题

热门文章

  1. Selenium-webdriver+八种元素定位
  2. c++结构体、共用体和枚举
  3. Ambari 2.6.0 HDP 2.6.3集群搭建
  4. 第五周总结 & 实验报告(三)
  5. WINDOWS API 大全(二)
  6. Linux_SystemLogManager
  7. 禁止SYS和SYSTEM用户远程登录Oracle oracle的sys和system默认密码
  8. 【Linux 应用编程】文件IO操作 - 常用函数
  9. c++ 创建 uuid guid
  10. ELK是什么