Spring核心之IOC
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的更多相关文章
- Spring核心思想Ioc和Aop (面试)
Spring核心思想Ioc和Aop (面试) 注意: Ioc和Aop并不是Spring提出的,在Spring之前就已经存在,Spring只是在技术层面给这两个思想做了非常好的实现. 1 Ioc 1.1 ...
- Spring核心思想——IOC和DI
基本概念 IOC是什么? IOC(Inversion of Control)控制反转,IOC是一种新的Java编程模式,目前很多轻量级容器都在广泛使用的模式. IOC解决了什么问题? ...
- Spring 核心之IOC 容器
核心概念: IOC(Inversion of Control)控制反转:所谓控制反转,就是把原先我们代码里面需要实现的对象创建.依赖的代码,反转给容器来帮忙实现. DI(Dependency Inje ...
- 3. Spring 核心之 IOC(控制反转) & DI(依赖注入)
注:此文摘自 http://blog.csdn.net/it_man/article/details/4402245 IOC(DI):其实这个Spring架构核心的概念没有这么复杂,更不像有些书上描述 ...
- Spring核心之IoC——依赖注入
在J2EE开发平台中,Spring是一种优秀的轻量级企业应用解决方案.Spring倡导一切从实际出发,它的核心技术就是IOC(控制反转)和AOP(面向切面编程)技术.本文用的Spring版本为spri ...
- Spring核心(ioc控制反转)
IoC,Inversion Of Control 即控制反转,由容器来管理业务对象之间的依赖关系,而非传统方式中的由代码来管理. 其本质.即将控制权由应用程序代码转到了外部容器,控制权的转移就是 ...
- Spring核心(IoC) 入门解读
什么是IoC容器和Bean? 说到容器,就是用来装东西,那么这里边装的是什么那?是bean对象.那么你会问什么是bean?这就要从很久很久以前说起,当我们创建对象的时候,我们会new一个对象出来,但是 ...
- Spring学习-spring核心机制-IOC依赖注入
转载自:http://www.cnblogs.com/chenssy/archive/2012/11/11/2765266.html 今天复习一下spring两大特性之一:IOC依赖注入,看了一下大佬 ...
- Spring核心结构及核心思想
Spring核心结构 基本概念 Spring是⼀个分层⾮常清晰并且依赖关系.职责定位⾮常明确的轻量级框架,主要包括⼏个⼤模块:数据处理模块.Web模块.AOP(Aspect Oriented Prog ...
随机推荐
- HashTable & HashMap & ConcurrentHashMap 原理与区别
一.三者的区别 HashTable HashMap ConcurrentHashMap 底层数据结构 数组+链表 数组+链表 数组+链表 key可为空 否 是 否 value可为空 否 是 否 ...
- 【C++】反斜杠“\”的作用
转自 https://blog.csdn.net/ismallboy/article/details/8082514 转义字符:如:\n表示回车+换行等. 续行符:这个需要注意一下,在一般的语句中,这 ...
- [ZZ] [精彩盘点] TesterHome 社区 2018年 度精华帖
原文地址: https://testerhome.com/topics/17646 相逢即是缘分,总有一篇适合您! 感觉好的请点赞收藏 ,感觉分类不严谨的,欢迎反馈给我! 测试方法&测试管理 ...
- 前端-JavaScript2-5——JavaScript之运算符进阶
运算符(Operators,也翻译为操作符),是发起运算的最简单形式. 运算符的分类见仁见智,我们的课程对运算符进行如下分类: 数学运算符(Arithmetic operators) 比较运算符(Co ...
- Spring boot加载REACTIVE源码分析
一,加载REACTIVE相关自动配置 spring boot通过判断含org.springframework.web.reactive.DispatcherHandler字节文件就确定程序类型是REA ...
- [转]TopShelf 用法
static void Main(string[] args) { { x.Service<SyncData>(s => { s.ConstructUsing(name => ...
- 廖雪峰Java9正则表达式-1正则表达式入门-2正则表达式匹配规则
正则表达式的匹配规则: 从左到右按规则匹配 匹配规则及示例 可以匹配 不能匹配 "abc" "abc" 不能匹配:"ab", "A ...
- Ubuntu14.04 使用本地摄像头跑ORB SLAM2(暂未完成)
嗯 这个方法我暂时弄不出来,用了另外一个方法:SLAM14讲 第一次课 使用摄像头或视频运行 ORB-SLAM2 前面的准备: Ubuntu14.04安装 ROS 安装步骤和问题总结 Ubuntu14 ...
- webservice之jax-ws实现方式
1.什么是webservice? webservice是一种远程资源调用技术,它的实现方式主要分为两种,第一种是jaxws方式,它是面向方法的,它的数据类型是xml是基于soap实现传输:第二种是ja ...
- Redis深入学习笔记(一)Redis启动数据加载流程
这两年使用Redis从单节点到主备,从主备到一主多从,再到现在使用集群,碰到很多坑,所以决定深入学习下Redis工作原理并予以记录. 本系列主要记录了Redis工作原理的一些要点,当然配置搭建和使用这 ...