其实,IoC主要分为2步:
1.控制反转-反向控制。以往的开发过程中,都是应用程序去调用系统的接口方法,比如调用系统library,这种做法的特点是,控制权掌握在应用程序手中。而控制反转就是在系统框架中,已经定义好了具体的操作模式,应用只需要实现部分借口就可以,所以这个控制流程掌握在框架手中。
与反向控制相对的是正向控制,如子类调用父类的方法,实现类调用系统库函数等
举例:
android中的框架中ActivityThread等已经定义好了activity的生命周期函数的执行顺序,而应用程序做的就是给这些个生命周期函数进行实现填充,控制权掌握在android手中。
2.依赖注入。实现组件间关系从程序内部提到外部容器来管理。也就是说由容器在运行期将组件间的某种依赖关系动态的注入组件中。控制程序间关系的实现交给了外部容器来完成。
为了更好的理解依赖注入,下面通过例子说明下:
假设有两个类B 和 C:B作为调用者,C是被调用者。一般的做法是:
public class B{
private C comp=new C();
......
}
工厂模式实现如下:
public class B{
private C comp;
private final static MyFactory myFactory = MyFactory.getInstance();
public B(){
this.comp = myFactory.createInstanceOfC();
}
public void someMethod(){
this.comp.sayHello();
}
}
使用Ioc依赖性注射实现
public class B{
private C comp;
public B(C comp){
this.comp = comp;
}
public void someMethod(){
this.comp.sayHello();
}
}
这个就和模板模式有点类似,只是模板模式的使用范围有点窄而已
分享到:
相关推荐
SSH框架,全称为Struts+Spring+Hibernate,是Java企业级开发中常用的一种技术栈,主要用于构建基于MVC(Model-View-Controller)设计模式的Web应用。在本篇文章中,我们将深入探讨这三个组件的核心概念和进阶用法,...
"浅谈Spring单例Bean与单例模式的区别" 本文主要介绍了Spring单例Bean与单例模式的区别,通过对比两者的定义、实现机制和应用场景,帮助读者更好地理解这两种概念的异同。 一、单例模式的定义和实现 单例模式是一...
对于Spring框架,面试官会期望求职者能清晰地阐述AOP(面向切面编程)和IOC(控制反转)的原理,并说明这些技术在实际项目中的应用。除了框架知识,面试官还希望求职者能熟悉Servlet的原理和生命周期,了解如何使用...
1. singleton:单例模式,Spring IoC容器中只会存在一个共享的Bean实例,无论有多少个Bean引用它,始终指向同一对象。Singleton作用域是Spring中的缺省作用域。 2. prototype:原型模式,每次通过Spring容器获取...
总结起来,Spring与SpringMVC的父子容器关系是Java Web开发中的一种设计模式,它允许开发者将应用程序的不同部分分开管理,提高代码的可维护性和复用性。理解这一关系以及初始化过程对于深入掌握Spring框架和Spring ...
- **缺点**:内部结构混乱,扩展性差,对Model的理解仅限于数据库操作,适合简单应用,中型应用可能力不从心。 5. **Zend Framework** - **优点**:Zend Framework采用PHP5的面向对象特性,遵循良好编程原则,...
浅谈设计模式实战 Koa 源码系列 koa 源码解析 理解 Koa 的中间件机制 co 源码剖析 全面理解 koa-router 前端相关 理解 Redux 理解模板引擎 JS 开发者写编译器必须懂的编码 Typescript IOC in Typescript Golang 解读...
15. 浅谈一下负载平衡的原理? 负载平衡是一种技术,用于实现高可用性和高性能,通过将请求分配到多个服务器上来实现。 16. 怎么办理权限分派 有几种权限分派模型? 权限分派模型包括自主型接见控制、强迫型接见...
在JavaSE完成之后,可以试着完成一些小项目,同时关注一下设计模式的内容,不必强求自己能够完全掌握各种细节,往前走吧。 掌握一种编程工具,比如说Eclipse。 数据库,可以选择使用Oracle或者MySQL开始 。 JDBC...