IOC是Spring的两大核心之一:IOC的核心就是解耦。

  举个例子:有2个班级可以上课,校长指定老师去上课,代码如下

  

package com.hongcong.test;

public class Class1 {
public void teach(){
System.out.println("一班在上课");
}
}
package com.hongcong.test;

public class Class2  {
public void teach(){
System.out.println("二班在上课");
}
}

teacher

package com.hongcong.test;

public class teacher {

    public void doTeach(){
Class1 class1 = new Class1();
class1.teach(); }
}

校长

package com.hongcong.service;

import com.hongcong.test.Class1;
import com.hongcong.test.Class2;
import com.hongcong.test.teacher; public class Principal {
public static void main(String[] args) {
teacher teacher = new teacher();
teacher.doTeach(); }
}

这时候去执行校长时,一班就开始上课了。但是如果校长想要老师去二班上课的话,要么修改老师中的方法;要么新增老师的方法且修改校长中的方法。可以看出,此时的代码耦合在了一起。这时候可以借助IOC的思想去重新设计这个程序,代码如下:

定义一个上课的接口,然后班级一和班级二都去实现这个接口:

package com.hongcong.test;

public interface TeachInterface {
public void teach();
}
package com.hongcong.test;

public class Class1 implements TeachInterface{
public void teach(){
System.out.println("一班在上课");
}
}
package com.hongcong.test;

public class Class2 implements TeachInterface{
public void teach(){
System.out.println("二班在上课");
}
}
package com.hongcong.test;

public class teacher {
private TeachInterface teachInterface; public void setTeachInterface(TeachInterface teachInterface) {
this.teachInterface = teachInterface;
} public void doTeach(){ teachInterface.teach();
}
}
package com.hongcong.service;

import com.hongcong.test.Class1;
import com.hongcong.test.Class2;
import com.hongcong.test.teacher; public class Principal {
public static void main(String[] args) { teacher teacher = new teacher();
teacher.setTeachInterface(new Class2());
teacher.doTeach();
}
}

此时校长如果想让老师去一班上课,只需要修改teacher.setTeachInterface(new Class2());方法中的参数就可以了。老师已经和去哪个班级上课完全没有关系了,只要校长下个指令就行。

Spring核心之IOC的更多相关文章

  1. Spring核心思想Ioc和Aop (面试)

    Spring核心思想Ioc和Aop (面试) 注意: Ioc和Aop并不是Spring提出的,在Spring之前就已经存在,Spring只是在技术层面给这两个思想做了非常好的实现. 1 Ioc 1.1 ...

  2. Spring核心思想——IOC和DI

    基本概念 IOC是什么?     IOC(Inversion of Control)控制反转,IOC是一种新的Java编程模式,目前很多轻量级容器都在广泛使用的模式. IOC解决了什么问题?      ...

  3. Spring 核心之IOC 容器

    核心概念: IOC(Inversion of Control)控制反转:所谓控制反转,就是把原先我们代码里面需要实现的对象创建.依赖的代码,反转给容器来帮忙实现. DI(Dependency Inje ...

  4. 3. Spring 核心之 IOC(控制反转) & DI(依赖注入)

    注:此文摘自 http://blog.csdn.net/it_man/article/details/4402245 IOC(DI):其实这个Spring架构核心的概念没有这么复杂,更不像有些书上描述 ...

  5. Spring核心之IoC——依赖注入

    在J2EE开发平台中,Spring是一种优秀的轻量级企业应用解决方案.Spring倡导一切从实际出发,它的核心技术就是IOC(控制反转)和AOP(面向切面编程)技术.本文用的Spring版本为spri ...

  6. Spring核心(ioc控制反转)

     IoC,Inversion Of Control 即控制反转,由容器来管理业务对象之间的依赖关系,而非传统方式中的由代码来管理. 其本质.即将控制权由应用程序代码转到了外部容器,控制权的转移就是 ...

  7. Spring核心(IoC) 入门解读

    什么是IoC容器和Bean? 说到容器,就是用来装东西,那么这里边装的是什么那?是bean对象.那么你会问什么是bean?这就要从很久很久以前说起,当我们创建对象的时候,我们会new一个对象出来,但是 ...

  8. Spring学习-spring核心机制-IOC依赖注入

    转载自:http://www.cnblogs.com/chenssy/archive/2012/11/11/2765266.html 今天复习一下spring两大特性之一:IOC依赖注入,看了一下大佬 ...

  9. Spring核心结构及核心思想

    Spring核心结构 基本概念 Spring是⼀个分层⾮常清晰并且依赖关系.职责定位⾮常明确的轻量级框架,主要包括⼏个⼤模块:数据处理模块.Web模块.AOP(Aspect Oriented Prog ...

随机推荐

  1. 1、IT人思维之投资开篇 - IT人思维之投资

    在IT圈中,很多人的认识就只在于工作中获取收益,这个观点是狭隘的,本身就不符合投资领域的内容.所以,在工作之余,笔者就对投资领域的内容进行的分析和收集整理相关的投资方面的内容,一方面对笔者自己的投资方 ...

  2. 关于mysql自增主键

    对于mysql表(其他数据库没测试过) 如果定义了自增主键,并且手动设置了主键的值,那么当再次自增创建数据的时候,回在设置的主键值的基础上进行自增. 如(id是主键): 起始插入(3,1),而后手动插 ...

  3. linux 中 && 及|| 判断原理

    [root@linuxprobe ~]# [ $USER = root ] && echo "root" || echo "user"root[ ...

  4. php7.2 sqlsrv 扩展 ubuntu Homestead centOs

    PHP 7.2.9-1+ubuntu18.04.1 安装 sqlsrv 扩展 参考文章,感谢作者(建议先看,不看也可以) https://serverpilot.io/docs/how-to-inst ...

  5. Xorboot-UEFI新手入门教程

    Xorboot-UEFI新手入门教程        Xorboot-UEFI是一款UEFI下轻量级的图形化多系统引导程序,pauly于2014年国庆节期间发布了预览版.搜了下论坛,关于Xorboot- ...

  6. 备忘-vs2015实用插件

    1. SuperCharger 2. Indent Guides缩进辅助线 3. Smooth Scroll平滑滚动 4. va 5. File Path On Footer 底部显示文件物理路径

  7. node-js:文摘

    ES6相关 1.module.exports与exports,export与export default之间的关系和区别 nodejs基础 1.NodeJs安装与全局配置(不建议修改包的全局安装路径, ...

  8. 阿里云服务器 centos7 中继邮箱+转发服务 详细配置

    阿里云centos7 邮箱转发服务配置 一.文档编写目的: 网络拓扑图: 阿里云服务器屏蔽掉25端口后,内网服务器如何通过跳板机发送邮件到外网邮箱. 如果是可联网的阿里云机器,可以直接配置mailx使 ...

  9. keil_v5生成.bin文件方法

    按ALT+F7,打开如下对话框 如上图,选择 After Build/ Rebuild下的Run#1,输入: C:/keil_v5/ARM/ARMCC/bin/fromelf.exe -bin -o ...

  10. Angular:在应用初始化时运行代码

    想象一下,您的应用需要一些动态配置信息,这些信息在应用启动之前需要动态获取,并在应用运行中使用. 显然不能直接写道静态配置文件中,但是从客户端发出的请求又是一个异步请求,如何协调这个问题呢? 这里,我 ...