IoC模式简介
IoC(Inversion of Control)模式并不是什么新的东西,它是一种很普遍的概念,依赖注入(Dependency Injection)是Martin Flower对IoC模式的一种扩展的解释[2]。IoC是一种用来解决组件(实际上也可以是简单的Java类)之间依赖关系、配置及生命周期的设计模式,其中对组件依赖关系的处理是IoC的精华部分。IoC的实际意义就是把组件之间的依赖关系提取(反转)出来,由容器来具体配置。这样,各个组件之间就不存在hard-code的关联,任何组件都可以最大程度的得到重用。运用了IoC模式后我们不再需要自己管理组件之间的依赖关系,只需要声明由容器去实现这种依赖关系。就好像把对组件之间依赖关系的控制进行了倒置,不再由组件自己来建立这种依赖关系而交给容器(例如我们后面会介绍的PicoContainer、Spring)去管理。
我们从一个简单的例子看起,考虑一个Button控制Lamp的例子:
public class Button {
private Lamp lamp;
public void push() {
lamp.turnOn();
}
}
private Lamp lamp;
public void push() {
lamp.turnOn();
}
}
但是马上发现这个设计的问题,Button类直接依赖于Lamp类,这个依赖关系意味着当Lamp类修改时,Button类会受到影响。此外,想重用Button类来控制类似与Lamp的(比如同样具有turnOn功能的Computer)另外一个对象则是不可能的。即Button控制Lamp,并且只能控制Lamp。显然违反了“高层模块不应该依赖于低层模块,两者都应该依赖于抽象;抽象不应该依赖于具体实现,细节应该依赖于抽象” 这一原则(DIP原则)。考虑到上述问题,自然的想到应该抽象出一个接口SwitchableDevice,来消除Button对Lamp的依赖,于是设计如下:
public class Button {
private SwitchableDevice lamp;
public Button(){
lamp= new Lamp();
}
}
private SwitchableDevice lamp;
public Button(){
lamp= new Lamp();
}
}
相关推荐
JAVA设计模式之IOC实战01
Java 使用 IOC 控制反转的三种设计模式详解 控制反转(IoC)是一种软件设计模式,目的是为了降低程序模块之间的耦合度,使得系统更加灵活和可维护。 Java 是一种广泛使用的编程语言,对于 Java 开发人员来说,掌握 ...
JAVA设计模式之IOC实战02
这些容器中包含一些共同的设计模式,这些模式的名称非常通用,被称为“Inversion of Control”(控制反转)。在这些容器下,组件的配置被外部化,通常是通过配置文件、注解或者API来完成的。 一个组件不会直接创建...
代理(Proxy)是一种设计模式,主要用于在不修改原有对象的基础上增加额外的功能或行为。在Java中,静态代理可以通过定义一个代理类来实现,而动态代理则使用`java.lang.reflect.Proxy`类和`java.lang.reflect....
IoC设计模式的实现通常依赖于容器,如Spring框架在Java中就是一个著名的IoC容器。开发者可以通过XML配置、注解或者编程式的方式来定义对象及其依赖关系。例如,在Spring中,我们可以在XML配置文件中定义Bean(代表一...
综上所述,Java IOC和反射API是Java开发中的重要工具,它们大大提升了代码的灵活性和可维护性,同时也需要开发者在设计和使用时注意性能和安全性。通过理解这些知识点,可以更好地利用Spring框架进行企业级应用的...
IOC是一种软件设计模式,旨在将对象的创建和管理从应用程序中分离出来。在Spring框架中,IOC容器负责创建和管理对象,并提供了一种机制来将对象注入到应用程序中。 六、Spring实现AOP 在Spring框架中,可以使用...
【Android应用开发中控制反转IoC设计模式使用教程】 IoC(Inversion of Control,控制反转)是一种设计模式,常被称为依赖注入(Dependency Injection,DI)。在Android应用开发中,IoC模式能够显著降低组件之间的...
《Java EE设计模式:Spring企业级开发最佳实践》是一本深度探讨如何在企业级环境中有效利用Java EE设计模式和Spring框架的专著。该书由人民邮电出版社出版,旨在帮助开发者掌握在复杂的企业级应用中,如何通过设计...
在IT行业中,依赖注入(IOC,Inversion of Control)是一种设计模式,它使得应用程序的组件之间解耦,提高了代码的可测试性和可维护性。在这个“自己实现ioc实例demo”中,我们将探讨如何通过XPath解析XML文件来实现...
在本资源中,我们将 Java 设计模式应用于自定义 Spring IoC 容器的实现,展示了如何通过设计模式来解决实际问题。同时,我们还提供了详细的 Spring 框架介绍,包括 Spring 的核心功能结构、Bean 的概述、Spring IoC ...
Java设计模式是软件开发中的重要概念,它是一种在特定情境下解决问题的经验总结,可以提高代码的可重用性、可维护性和灵活性。本教程“一天学通Java设计模式(2)”旨在帮助开发者快速理解并掌握Java设计模式,特别...
**Java与设计模式** 在软件开发领域,设计模式是一种被广泛接受并应用于解决常见问题的通用解决方案。Java作为最流行且强大的面向对象编程语言之一,自然与设计模式有着紧密的联系。设计模式不仅提升了代码的可读性...
9)下载附件2019-10-1720:55上传〖课程介绍〗:知识要点:面向对象设计原则、UML、设计模式、Hibernate底层分析、IOC实现分析课程目标:掌握7大设计原则,掌握UML建模,掌握常用设计模式了解其它设计模式Java设计模式...
IoC(Inversion of Control)是 Spring 框架中的一种设计模式,它的主要思想是将对象的创建和管理交给容器,从而解耦合对象之间的依赖关系。今天,我们将详细解析 IoC 的优点和缺点。 优点 1. 简化对象的创建:IoC ...