`
dreamstone
  • 浏览: 288553 次
  • 来自: ...
文章分类
社区版块
存档分类

控制反转的资料的集合及简单的概念对比

阅读更多

控制反转:
控制反转的资料的集合
参考一、
标题:向依赖关系宣战----依赖倒置、控制反转和依赖注入辨析
url:http://www.contextfree.net/wangyw/source/dip_ioc.html
说明:详细分析了几个概念的不同
参考二、
Spring guide
参考三、
WebWork In Action IOC一章
参考四、
Martin fowler的文章
http://www.blogjava.net/Files/dreamstone/DependencyInjection.rar
强烈建议大家看一下第一篇文章和第四篇,作者写的真的很好

对比依赖倒置,控制反转,依赖注入?
---------------------------------------------
1,依赖倒置:
先说明什么是"正置"
正置就是,当你设计一些类库的时候,考虑到用户的需要定义一些接口,用户的应用程序依赖这些接口

对比"正置"和"倒置"
正置:应用依赖接口,接口由类库设计者定义
优点:类库实现上自由度大,实现容易。
缺点:类库设计复杂,要预测应用的需求,同时有可能不符合应用的需求

倒置:应用定义接口,类库设计者实现接口,按照接口实现类库
优点:类库设计不再需要预测,肯定符合应用需求
缺点:类库有可能难以实现

简单来说,正置和倒置的区别在于,谁来制定标准。现实中因为需求的定义是客户决定的,所以倒置更
适合程序的设计。从需求出发,到底层实现。

使用目的:便于应用按照需求设计
关注点:接口的设计
---------------------------------------------
2,控制反转:
正常的控制:
 没有一定的控制流程,下一个流程由上一个流程决定,实现应用需要自己控制流程
控制反转  :
 抽象出固定的流程,实现应用就是填充流程中的一个个点。
 所有的框架都是基于控制反转的。Windows GUI开发也多是这样。
目的:高度抽象,设计框架
关注点:流程的设计
---------------------------------------------
3,依赖注入
原始的情况:
 应用自己new 类,或者使用工厂模式创建类
依赖注入:
 容器创建类,通过构造函数,setter方法,接口等方法,运行时"注入"到应用中

实现:
Spring        setter方法
webwork IOC  实现接口的方法
pico   构造函数的方法

目的:完全分离开发
关注点:构造对象

---------------------------------------------
关系:
"控制反转"是"依赖倒置"的一种,"依赖注入"是在"控制反转"的基础上,让容器来完成"注入"过程。
---------------------------------------------
最需要依赖注入的情况:
"调用者"和多个"被调用者"分别开发,分别打包分发,实施者根据实际情况决定使用哪个"被调用者"被使用
做成可配制的,这种情况是经常需要的。这个时候调用者内不能出现这样的代码:
interface inter = new interfaceimplA();类似的语句。因为使用的可能是interfaceimplB
为了避免这样语句的出现,我们直接使用接口,而对象的构造推迟,让容器根据实施者的配制来构造,并注入
正确的位置。

 

 

 

 

 

 

 


 

分享到:
评论

相关推荐

    .net方向面试考题大集合

    根据提供的文件信息,...以上知识点覆盖了.NET开发中的基础概念和技术要点,对于准备.NET面试的开发者来说是非常有价值的复习资料。熟练掌握这些知识点,有助于在面试中表现出色,并在实际工作中更加高效地解决问题。

    java论文参考资料(供参考)

    - Spring框架:IoC(控制反转)和AOP(面向切面编程),简化企业级应用开发。 8. **附录英文原文**: - 提供了对上述内容的英文理解,便于对比学习,提升英文阅读和专业词汇能力。 这篇论文参考资料旨在为Java...

    java+web开发+复习资料+面试题

    - Spring框架:理解依赖注入(DI)和控制反转(IOC)的概念,学习Spring MVC的运行机制,AOP(面向切面编程)的应用。 - Hibernate:掌握ORM(对象关系映射)思想,学会使用HQL查询语言,实体类和映射文件的配置。...

    java后端面试准备资料

    - IoC(控制反转)和DI(依赖注入):Spring的核心概念,简化对象依赖关系的管理。 - AOP(面向切面编程):用于实现日志、事务管理等功能。 - Spring Boot和Spring Cloud:快速开发和微服务架构的应用。 7. **...

    Spring 学习资料

    这里提到的"Spring 学习资料"包含了三个PDF文档,分别涵盖了IoC(控制反转)、AOP(面向切面编程)以及可能的其他关键概念,对于初学者来说是非常有价值的资源。 首先,让我们详细了解一下Spring的IoC容器。IoC是...

    java 知识一览,所有知识汇总,最好的资料

    8.1 IOC(Inversion of Control):理解控制反转的概念,以及依赖注入的实现。 8.2 AOP(Aspect Oriented Programming):了解面向切面编程,实现代码的解耦。 九、Maven项目管理 9.1 Maven概念:学习Maven的项目...

    java面试大全

    - IoC与DI:理解控制反转和依赖注入的概念,以及Spring如何实现这些原则。 - AOP:掌握面向切面编程,如何定义和使用切面、通知、切入点表达式。 - Spring Boot:了解Spring Boot的快速开发特性,如自动配置和...

    J2EE软件工程师内部培训资料

    - **IOC(控制反转)**:解释控制反转(IoC)的概念及其在Spring中的实现方式。 - **AOP(面向方面的程序设计)**:介绍面向切面编程(AOP)的原理以及Spring AOP的使用方法。 - **Spring中的DataAccess**:讨论Spring...

    JAVA核心面试知识整理

    11. **IoC(Inversion of Control)与DI(Dependency Injection)**:理解控制反转和依赖注入的概念,以及Spring如何实现它们。 12. **AOP(Aspect Oriented Programming)**:面向切面编程,用于解耦代码,如日志...

    java面试资料

    - **依赖注入**:理解IoC(控制反转)和DI(依赖注入)的概念。 - **AOP(面向切面编程)**:理解切面、通知、切入点表达式。 - **Spring Boot**:快速启动,自动配置的特性。 以上只是Java面试中的一小部分知识...

    JAVA面试题解惑系列

    - Spring框架的理解,依赖注入(DI)与控制反转(IoC)的概念。 - MyBatis或JDBC操作数据库的基本流程。 11. **源码分析** - 对开源库或框架的源码进行分析,例如HashMap的内部实现,ArrayList与LinkedList的...

    Java面试题

    9. **Spring框架**:理解依赖注入(DI)和控制反转(IOC)的概念,掌握Spring的核心组件,如Bean管理、AOP(面向切面编程)、事务管理等。 10. **数据库相关**:SQL语言基础,包括DML(增删改查)、DDL(定义表结构...

    华为方正中软等公司java面试及笔试题.rar

    作为企业级应用的主流框架,Spring的AOP(面向切面编程)、DI(依赖注入)、IoC(控制反转)等核心概念需要深入理解。面试中可能会考察Spring Boot、Spring Cloud等相关技术。 九、数据库 基本的SQL语句操作,如...

    JAVA面试题大全

    - IoC(控制反转)与DI(依赖注入)的概念。 - AOP(面向切面编程):切面、通知、织入的理解。 - Spring Boot的特性与快速开发优势。 10. **数据库相关** - SQL语言:增删改查操作,JOIN、索引、事务等概念。 ...

    爆肝三十天!我汇总了整个B站最完整的Java面试八股文,基础进阶到高频重点,只有1000集,能跟我再刷一遍吗?

    - IoC(控制反转)与DI(依赖注入):理解Spring的核心理念。 - AOP(面向切面编程):使用AspectJ或Spring的注解实现切面。 - Spring Boot与Spring Cloud:快速开发与分布式微服务架构。 这些知识点只是Java...

    Java学习材料(499篇文章)

    除此之外,还有可能涉及到Spring框架,这是一个Java企业级应用开发的基石,包括IoC(控制反转)和AOP(面向切面编程)的概念。 对于数据库交互,JDBC(Java Database Connectivity)是关键,文章会讲解如何连接...

    2020互联网面试题

    1. IoC(Inversion of Control):理解控制反转的概念,掌握依赖注入的实现方式。 2. AOP(Aspect-Oriented Programming):理解面向切面编程,熟悉切点、通知、代理等概念。 3. Bean管理:学习如何定义Bean,以及...

    java方面的几份面试题

    - IoC(控制反转)和DI(依赖注入):理解这两个概念及其在Spring中的实现。 - AOP(面向切面编程):掌握Spring的切面、通知、目标对象等概念,以及如何编写和配置切面。 - Spring Boot和Spring Cloud:简述这两...

    java程序员面试题大全

    - IoC(控制反转)与DI(依赖注入):理解其概念和实现方式。 - AOP(面向切面编程):了解切点、通知、织入等概念。 - Spring Boot与Spring Cloud:快速启动和分布式系统解决方案。 9. **数据库相关** - SQL...

    计算机和JAVA 面试题大全

    - 面试题:对比ArrayList和LinkedList的区别及应用场景。 - 深入理解List、Set、Map接口及其常用实现类,如ArrayList、HashSet、HashMap等。 5. **方法与异常处理** - 讨论方法的定义、重载和重写。 - 面试题:...

Global site tag (gtag.js) - Google Analytics