`
yunnick
  • 浏览: 392022 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

模式之IOC设计思想总结

阅读更多

        IOC(Inversion of Control)即控制反转,是在面试或平常交流中经常遇到了词汇;我也曾经仿照Spring,利用JDK的反射和动态代理实现了一个简单的IOC框架,感觉算是知其然也知其所以然了;但如果问我Spring的IOC之所以流行的原因是什么,或者说IOC的好处和核心原理是什么,还真是一下子回答不出来。惊讶

       

       IOC作为一种设计模式,首先想到其实现了组件的解耦及代码复用。如果是初学者,在类A里调用类B的方法,一般就直接new B()写死在代码中,如果哪一天不用B了,改用C,只能在project中查询一下new B(),然后全部改成new C(),这种方式下A做任何事情都完全依赖于B或C,A每每都需要亲自动手去实现或者引用具体的实现类,A和B、C是紧耦合的,代码维护也很辛苦;而IOC就是把这种“实现类”的关系控制在自己手中,称为反转,而只需要给A提供一个接口IB(A不需要依赖B或C了),该接口定义了类的行为规范(即“实现类”需要能做这个也能做那个,但具体怎么做或者弄虚作假,是不管的),IOC就负责在运行时完成动态的注入过程(类的实例化及接口对实例的引用),所以IOC也称为DI(Dependecy Injection 依赖注入),这种说法更形象些;而这种面向接口的编程方式和设计模式是密不可分的。

       

        如何注入,具体注入哪个实现类的实例,一般都是在配置文件里指明,这个文件就是IOC的一个说明书,实现了资源的集中配置及管理。

 

       最后,不得不提一下“关注点分离”(Separation of Concerns : SOC),这是解决复杂问题常用的一种思维方法,将一个大的复杂问题分解为小而简单问题,关注不同的侧重点(模块、服务),最后形成最终解决方案,这是提高生产效率的有效方式。而IOC正是这样的一种思维方式,就比如实现A,并不用关心如何实现B;AOP也是基于IOC的一种应用,编码时只需要关注某项服务的实现,所有的组合,在运行时由IOC注入即可(before,after,around)。

 

       综上,解耦、资源集中、关注分离,应该就是IOC的核心思想了。

 

参考:http://www.zhihu.com/question/23277575

           http://www.nowamagic.net/librarys/veda/detail/393

2
0
分享到:
评论

相关推荐

    IoC 容器和Dependency Injection 模式

    依赖注入(DI)是一种设计模式,它实现了 IoC 的思想。在 DI 中,组件不再直接创建其所依赖的对象,而是将这些依赖作为参数传递进来。这种方式有多种实现形式: 1. **构造函数注入**(Constructor Injection):...

    Android应用开发中控制反转IoC设计模式使用教程

    【Android应用开发中控制反转IoC设计模式使用教程】 IoC(Inversion of Control,控制反转)是一种设计模式,常被称为依赖注入(Dependency Injection,DI)。在Android应用开发中,IoC模式能够显著降低组件之间的...

    ioc模式与工厂模式的比较[借鉴].pdf

    在软件开发领域,IOC(Inversion of Control,控制反转)模式和工厂模式是两种常见的设计模式,它们在解决对象创建和依赖关系管理方面各有特点。本文主要探讨这两者之间的区别和联系。 首先,IOC模式的核心思想是将...

    Spring的IoC实现案例

    IoC,也称为依赖注入(Dependency Injection,DI),是一种设计模式,它将对象的创建和管理责任从使用它们的代码中分离出来。在Spring框架中,IoC容器负责创建对象、管理它们之间的依赖关系,并在需要时注入这些依赖...

    IOC详解IOC详解IOC详解IOC详解

    总结来说,IoC是一种设计思想,它通过反转对象的控制权,将对象的创建和管理交给一个外部容器,从而降低了对象间的耦合,提高了软件的可扩展性和可测试性。在Java中,Spring框架提供了强大的IoC和DI功能,是实现这一...

    IOC练习事列

    **IOC(Inversion of Control)**,即控制反转,是一种设计模式,它的核心思想是将对象的创建和依赖关系的管理从应用代码中解耦出来,交给一个专门的容器来处理。这种模式使得代码更加灵活,降低了模块间的耦合度,...

    以注解方式模拟Spring IoC AOP

    总结来说,模拟Spring的IoC和AOP主要是通过注解来管理和控制对象的生命周期及行为。虽然这种模拟简化了Spring的复杂性,但其核心思想是一致的:降低耦合,提高可维护性和可扩展性。理解并实践这些概念,对于掌握...

    MVC与IOC容器互动

    IOC,即控制反转,是一种设计原则,它的核心思想是将对象的创建和管理权交给容器,而不是由对象自己管理。这样可以降低对象之间的耦合度,提高系统的灵活性和可维护性。在实际应用中,IoC通常通过依赖注入...

    IOC的原理以及自定义使用

    **IOC(Inversion of Control)**,即控制反转,是软件设计模式中的一种核心概念,主要应用于依赖注入(Dependency Injection,DI)。它改变了传统的对象创建和管理方式,将对象的创建和组装的权利从代码中剥离出来...

    Spring 之IoC入门实例

    **IoC** 是一种设计原则,它的核心思想是将程序的控制权从对象本身转移给外部容器。这意味着不再由对象自己负责创建和管理其依赖,而是由一个外部的“控制器”来负责。这降低了对象之间的耦合度,因为它们不再直接...

    spring_ioc spring ioc

    IoC(Inversion of Control,控制反转)是一种设计思想,在Spring框架中主要体现在这样一种方式:原本在程序代码中由开发者自己控制的对象的创建过程以及依赖关系的管理,通过Spring框架的IoC容器来接管并控制。...

    ioc AOP深入了解

    IoC,即控制反转,是一种设计思想,在软件工程领域被广泛应用于解决对象间依赖关系的问题。传统的编程模式中,对象创建自身依赖的对象并调用它们,而在IoC模式下,对象依赖的其他对象是由外部容器提供的。这样做的...

    74丨总结回顾23种经典设计模式的原理、背后的思想、应用场景等1

    设计模式是软件开发中的一种最佳实践,用于解决常见的设计问题,提高代码的可维护性和可扩展性。在本文中,我们将回顾23种经典设计模式中的创建型模式,包括单例模式、工厂模式和建造者模式。 1. 单例模式: 单例...

    设计模式java

    设计模式是软件工程中一个重要的概念,它是一套被反复使用、多数人知晓、经过分类编目、代码设计经验的总结。使用设计模式是为了可重用代码、让代码更容易被他人理解、保证代码可靠性。很多模式在Java等面向对象的...

    Mvc+IOC 、多层架构

    IOC(控制反转)是一种设计原则,其核心思想是将对象的创建和管理交给框架或容器来处理,而不是在代码中直接实例化。这使得依赖关系的管理和解耦变得更容易。在Mvc应用中,IOC容器可以自动管理对象的生命周期,实现...

    自己的IoC框架实现

    总结来说,实现自己的IoC框架需要理解控制反转的核心思想,创建一个能够解析配置、实例化对象、管理依赖关系的容器,并通过测试确保框架的正确性。这是一个很好的学习和理解Spring IoC机制的过程,有助于加深对依赖...

    Spring IOC AOP MVC 简单例子

    IOC,也称为控制反转,是一种设计模式,其核心思想是将对象的创建和管理交给容器来处理,而不是由对象自身负责。Spring框架的IOC容器负责创建对象、管理对象之间的关系以及执行对象的生命周期方法。例如,`SpringIOC...

    Spring IOC容器实现分析.pdf 下载

    IOC,即控制反转,是面向对象编程中的一个设计原则,它的主要思想是将对象的创建和管理权交给外部容器,而不是由对象自身负责。在Spring框架中,IOC容器负责管理对象的生命周期和依赖关系,通过配置文件或注解来定义...

    android IOC 实现

    在Android开发中,IOC(Inversion of Control,控制反转)是一种设计模式,它将对象的创建和依赖关系的管理从代码中分离出来,使得代码更加灵活、可维护。本篇文章将详细探讨Android中的IOC实现,特别是通过注解的...

Global site tag (gtag.js) - Google Analytics