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 ...
随机推荐
- Javascript 使用postMessage对iframe跨域传值或通信
实现目标:两个网站页面实现跨域相互通信 当前例子依赖于 jQuery 3.0 父页面代码:www.a.com/a.html <iframe id="myIframe" src ...
- 【转】计算机信息系统安全保护等级划分准则(GB 17859-1999)
计算机信息系统安全保护等级划分准则(GB 17859-1999) 概述 计算机信息系统安全保护等级划分准则(GB 17859-1999) 1 范围 本标准规定了计算机系统安全保护能力的五个等级,即: ...
- webstorm的相关操作
1.webstorm修改tab键的缩进
- python 函数内使用自己的函数名
def p(): import sys print sys._getframe(1).f_code.co_name def f(): p() def f1(): p() if __name__ == ...
- 0002-小牛学堂大数据24期视频-架构Hadoop-Spark
- 未来-IOT-Aliyun:ICA 联盟
ylbtech-未来-IOT-Aliyun:ICA 联盟 ICA联盟介绍 为解决IoT标准体系不完善,场景复合或者分散,不同领域端云连接.通信组网.数据属性.端到端安全.测试标准缺乏或不统一等痛点问题 ...
- http协议和telnet指令讲解
http协议: 1.http:是网络传输协议:全称为:超文本传输协议: 关系:客户端和服务器的关系: 协议:就是一种规范: 常见的http和https两种,https是http的升级版 http协议: ...
- Java核心-多线程-并发控制器-CyclicBarrier同步屏障
1.基本概念 中文译本同步屏障,同样来自jdk并发工具包中一个并发控制器,它的使用和CountDownLatch有点相似,能够完成某些相同并发场景,但是它们却不相同. 2.抽象模型 主要用来实现多个线 ...
- python slenium 中CSS定位
以百度为例 一.通过id.class定位 1.#id:python:driver.find_element_by_css_selector('input#kw') 2..class:python:dr ...
- java.lang.StackOverflowError
在开发中经常会遇到内存溢出的情况,大部分原因是因为:代码中有死循环.过度递归等情况 解决办法:看报错 找到是因为死循环还是过度递归,改掉即可 我的报错原因是使用了 new Gson.().toJson ...