接口 可以提供不同的子类实现,增加代码稳定和健壮性等等,但是接口一定是需要实现的,也就是如下语句迟早要执行:
AInterface a = new AInterfaceImp(); 这样一来,耦合关系就产生了,如:
Class A {
AInterface a;
void aMethod() { a = new AInterfaceImp(); }
}
ClassA与AInterfaceImp就是依赖关系,如果想使用AInterface的另外一个实现就需要更改代码了。当然我们可以建立一个Factory来根据条件生成想要的AInterface的具体实现,即:
InterfaceImplFactory {
AInterface create(Object condition) {
1、 if(condition == condA) { return new AInterfaceImpA(); }
2 、else if(condition == condB) {return new AInterfaceImpB(); }
3 、else { return new AInterfaceImp(); }
}
}
表面上是在一定程度上缓解了以上问题,但实质上这种代码耦合并没有改变。
IoC模式 把 耦合 从代码中移出,放到 XML 文件中,通过一个 容器 在需要的时候把 依赖关系 形成,即把需要的 接口实现 注入到需要它的类中,这可能就是“依赖注入”说法的来源了。
IOC模式,可由 IOC容器 来 管理 对象的生命周期、依赖关系等,从而使得应用程序的配置和依赖性规范与实际的应用程序代码分开。其中一个特点就是通过文本的配件文件进行应用程序组件间相互关系的配置,而不用重新修改并编译具体的代码。
可以把IoC模式看做是工厂模式的升华:
1、可以把IoC看作是一个大工厂,在XML文件中定义要生成的对象,利用Java 的“反射”编程,根据XML中给出的类名生成相应的对象,提高灵活性和可维护性
2、反射就是根据给出的类名(字符串)来生成对象。让对象在生成时,才决定要生成哪一种对象。反射方式生成对象 比 通常对象生成方式速度慢 一陪
分享到:
相关推荐
Spring IOC 控制反转简单过程 1: 导入需要报 2:构建spring的配合文件 3: 将我们创建的类交给spring容器管理 4: 实例化容器 5: 从容器中获取实例
spring IOC控制反转 spring IOC控制反转 spring IOC控制反转
IOC控制反转在代码中体现.
spring技术--IOC控制反转课件.ppt
spring ioc控制反转简单测试代码
详细讲解ioc控制反转机制,供大家深入了解ioc机制
Spring框架IoC控制反转
在Spring中使用Ioc控制反转,里面的底层实现原理,以及实现过程~
IOC控制反转代码,bilibili配套文件
.net autofac 与IOC控制反转来调用数据库事例,让大家可以一目了然的了解怎么使用,方便大家提高工作效率,特意奉献出来
Java仿Spring框架IOC控制反转利用反射简单实现(源码) Java仿Spring框架IOC控制反转利用反射简单实现(源码)
Ioc(控制反转)的C#例子,包括相关的例子源码
【IOC 控制反转】Android 视图依赖注入 ( 视图依赖注入步骤 | 视图依赖注入代码示例 ) https://hanshuliang.blog.csdn.net/article/details/120404805 博客源码快照
【IOC 控制反转】Android 布局依赖注入 ( 布局依赖注入步骤 | 布局依赖注入代码示例 ) https://hanshuliang.blog.csdn.net/article/details/120402953 博客源码快照
Autofac Ioc C# Demo 控制反转 简单例子,控制反转 ,使程序更容易些换接口,易扩展。
Spring框架学习中的核心,控制反转IOC,理解Spring框架主要注入所依赖的资源,解耦开发
springIOC 小例子 附带源码 适合新手学习
该项目实现了简单的IOC技术思想和DI依赖注入
NULL 博文链接:https://2594082lhj.iteye.com/blog/1694629