专题一   IOC

1.接口以及面向接口编程

a.结构设计中,分清层次以及调用关系,每层仅仅向外(或者上层)提供一组功能接口,各层间仅依赖接口而非实现类这样做的优点是,接口实现的变动不影响各层间的调用。这一点在公共服务中尤为重要。

b.“面向接口编程”中的“接口”。是用于隐藏详细实现。和实现多态性的组件 。

2.什么是IOC

控制反转(inversion of control)。控制权的转移,应用程序本身不负责依赖对象的创建和维护。

而是由外部容器负责创建和维护。(我们不负责对象的创建,由外部(这里指的是spring容器)容器来创建,我们来使用)

以下是一个spring 官网的图片来说明这个关系。

实现IOC的方法:DI(依赖注入,dependency injection)是其(控制反转IOC的)一种实现方式。所谓依赖注入,就是由IOC容器。在执行期间,动态的将某种依赖关系注入到对象之中。

IOC的目的:创建对象而且组装对象之间的关系。这个怎么理解呢?在初始化的时候,会创建一系列的对象。同一时候它可以把对象之间的这样的依赖关系通过注入的方式组织起来。

究竟是什么被反转了,Martin Fowler经过分析,得出了答案,“ 获得依赖对象的过程被反转了”,获得依赖的过程由自身管理,变成了由IOC容器主动注入。

接下来我们进行生动形象的描写叙述IOC,我们将IOC与房屋的中介做一个比喻:

房屋中介:
IOC

1.找中介
1.找IOC容器

2.中介介绍房子
2.容器返回对象

3.租房,入住
3.使用对象

spring 中的对象叫做  bean

自从有了IOC之后:

不必自己创建对象,由于IOC机制已经提供了。

面向接口编程。IOC隐藏了实现

不用再管理对象了。IOC管理了。

Spring之IOC篇章具体解释的更多相关文章

  1. Spring的IOC原理[通俗解释一下]

    Spring的IOC原理[通俗解释一下] 1. IoC理论的背景我们都知道,在采用面向对象方法设计的软件系统中,它的底层实现都是由N个对象组成的,所有的对象通过彼此的合作,最终实现系统的业务逻辑. 图 ...

  2. [转]Spring的IOC原理[通俗解释一下]

    1. IoC理论的背景我们都知道,在采用面向对象方法设计的软件系统中,它的底层实现都是由N个对象组成的,所有的对象通过彼此的合作,最终实现系统的业务逻辑. 图1:软件系统中耦合的对象 如果我们打开机械 ...

  3. Spring的IOC原理 通俗解释

    1. IoC理论的背景我们都知道,在采用面向对象方法设计的软件系统中,它的底层实现都是由N个对象组成的,所有的对象通过彼此的合作,最终实现系统的业务逻辑. 图1:软件系统中耦合的对象 如果我们打开机械 ...

  4. 【SSH进阶之路】Spring的IOC逐层深入——Spring的IOC原理[通俗解释一下](三)

    1. IoC理论的背景我们都知道,在采用面向对象方法设计的软件系统中,它的底层实现都是由N个对象组成的,所有的对象通过彼此的合作,最终实现系统的业务逻辑. 图1:软件系统中耦合的对象 如果我们打开机械 ...

  5. 【死磕 Spring】----- IOC 之深入理解 Spring IoC

    在一开始学习 Spring 的时候,我们就接触 IoC 了,作为 Spring 第一个最核心的概念,我们在解读它源码之前一定需要对其有深入的认识,本篇为[死磕 Spring]系列博客的第一篇博文,主要 ...

  6. 【SSH进阶之路】Spring的IOC逐层深入——源码解析之IoC的根本BeanFactory(五)

    我们前面的三篇博文,简单易懂的介绍了为什么要使用IOC[实例讲解](二).和Spring的IOC原理[通俗解释](三)以及依赖注入的两种常用实现类型(四),这些都是刚开始学习Spring IoC容器时 ...

  7. Spring中IOC和AOP的详细解释

    我们是在使用Spring框架的过程中,其实就是为了使用IOC,依赖注入,和AOP,面向切面编程,这两个是Spring的灵魂. 主要用到的设计模式有工厂模式和代理模式. IOC就是典型的工厂模式,通过s ...

  8. Spring中IOC和AOP的详细解释(转)

    原文链接:Spring中IOC和AOP的详细解释 我们是在使用Spring框架的过程中,其实就是为了使用IOC,依赖注入,和AOP,面向切面编程,这两个是Spring的灵魂. 主要用到的设计模式有工厂 ...

  9. Spring IOC源代码具体解释之容器初始化

    Spring IOC源代码具体解释之容器初始化 上篇介绍了Spring IOC的大致体系类图,先来看一段简短的代码,使用IOC比較典型的代码 ClassPathResource res = new C ...

随机推荐

  1. 在CNN网络中roi从原图映射到feature map中的计算方法

    在使用fast rcnn以及faster rcnn做检测任务的时候,涉及到从图像的roi区域到feature map中roi的映射,然后再进行roi_pooling之类的操作.比如图像的大小是(600 ...

  2. Fortran中常用函数列表

    Y=INT(X) 转换为整数 ALL(所有型态) INTEGER Y=REAL(X) 转换为实数 INTEGER REAL Y=DREAL(X) 取复数实部(倍精度) COMPLEX*16 REAL* ...

  3. laravel 数据导出

    支持:php 7.0 以上 三种方案总结介绍: 第一种:最简单且不会有长久隐患.但不适合数据量多    第二种:  适合中等数据量,不会有长久隐患.但导出时极占内存   第三种:适合大量数据,不会占据 ...

  4. InnoDB INFORMATION_SCHEMA Tables about Compression

    InnoDB INFORMATION_SCHEMA Tables about Compression 了解关于压缩的InnoDB INFORMATION_SCHEMA表,可以深入了解压缩的整体运行情况 ...

  5. python计算圆面积

    #coding=gbk #coding=utf-8 #-*- coding: UTF-8 -*- #调用math包处理相关的运算 import math #圆半径 r = 2 #计算圆面积π*r*r与 ...

  6. JQuery,CSS的小理解

    *一个按钮可以在css里面设计样式(定义长宽高,位置),在jsp里面也有部分,通过jQuery定义function()及点击后的动作 *jQuery就是封装好javascript(js代码)的一系列动 ...

  7. NYOJ90-整数划分,经典递归思想~~

    整数划分 时间限制:3000 ms  |  内存限制:65535 KB 难度:3 描述 将正整数n表示成一系列正整数之和:n=n1+n2+-+nk,  其中n1≥n2≥-≥nk≥1,k≥1.  正整数 ...

  8. [NOI2003]Editor(块状链表)

    传送门 看了看块状链表,就是数组和链表的合体. 看上去好高大尚,思想也很简单. 但是发现代码量也不是很小,而且代码理解起来也是费尽得很,倒不如splay用起来顺手. 在加上适用范围貌似不是特别广,所以 ...

  9. 【树形DP】codeforces K. Send the Fool Further! (medium)

    http://codeforces.com/contest/802/problem/K [题意] 给定一棵树,Heidi从根结点0出发沿着边走,每个结点最多经过k次,求这棵树的最大花费是多少(同一条边 ...

  10. android L版本AAL新架构

    [DESCRIPTION] 和之前KK版本相比,在L版本上面AAL的架构也有发生一些改变. 拿掉了之前KK平台上使用的MTK LABC,使用Android原生的自动背光功能. AALService内部 ...