java 控制反转和依赖注入的理解
开始好好学习java基础和思想~
控制反转(IOC)是Spring框架的核心思想,用我自己的话说,就是你要做一件事,别自己可劲new了,你就说你要干啥,然后外包出去就好~
依赖注入(DI) 在我浅薄的想法中,就是通过接口的引用和构造方法的表达,将一些事情整好了反过来传给需要用到的地方~
这样做得好处:做到了单一职责,并且提高了复用性,解耦了之后,任你如何实现,使用接口的引用调用的方法,永远不需要改变
举一个栗子:
写个接口,说咱们购物去~
public interface IShopping {
void drive();
String Money();
}
在实现它两下:有钱人购物,没钱人购物 - -!这栗子举的
public class RichMan implements IShopping{
@Override
public void drive() {
System.out.println("Drive By Benz");
}
@Override
public String Money() {
System.out.println("lot`s of money");
return "10000";
}
}
public class PoorGuy implements IShopping{
@Override
public void drive() {
System.out.println("take a walk!");
}
@Override
public String Money() {
System.out.println("nothing");
return "1";
}
}
然后我们出去玩,顺便shopping一下吧~
public class Play {
private IShopping shoppingSomething;
//使用构造方法,将实现传入
public Play(IShopping shoppingSomething){
this.shoppingSomething = shoppingSomething;
}
public void withgirlFriend(){
shoppingSomething.drive();
shoppingSomething.Money();
}
}
将想用的实现方式,用容器注入进来,这里就模拟下下怎么注入:
public class Containner {
public Play getShopping(){
return new Play(new RichMan());
}
}
测试一下:
public static void main(String[] args) {
Containner containner = new Containner();
Play play = containner.getShopping();
play.withgirlFriend();
}
结果是:
Drive By Benz
lot`s of money
如果再依赖注入的配置时,配置为穷人的实现,那我们的代码都不用变,结果就会改变~ 嗯,应该理解了。
java 控制反转和依赖注入的理解的更多相关文章
- Java 控制反转和依赖注入模式【翻译】【整理】
Inversion of Control Containers and the Dependency Injection pattern --Martin Fowler 本文内容 Component ...
- java控制反转与依赖注入
1.简介 依赖注入和控制反转,目的是为了使类与类之间解耦合,提高系统的可扩展性和可维护性,下面通过一个例子来引入这一概念. 2.案例 1)一般情况下的类耦合 Main.java public clas ...
- 对spring控制反转以及依赖注入的理解
一.说到依赖注入(控制反转),先要理解什么是依赖. Spring 把相互协作的关系称为依赖关系.假如 A组件调用了 B组件的方法,我们可称A组件依赖于 B组件. 二.什么是依赖注入. 在传统的程序设计 ...
- Spring理论基础-控制反转和依赖注入
第一次了解到控制反转(Inversion of Control)这个概念,是在学习Spring框架的时候.IOC和AOP作为Spring的两大特征,自然是要去好好学学的.而依赖注入(Dependenc ...
- java依赖的斗争:依赖倒置、控制反转和依赖注入
控制反转(Inversion Of Controller)的一个著名的同义原则是由Robert C.Martin提出的依赖倒置原则(Dependency Inversion Principle),它的 ...
- Java之控制反转和依赖注入
1.简介 依赖注入和控制反转,目的是为了使类与类之间解耦合,提高系统的可扩展性和可维护性,下面通过一个例子来引入这一概念. 2.案例 1)一般情况下的类耦合 Main.java public clas ...
- Java Web实现IOC控制反转之依赖注入
控制反转(Inversion of Control,英文缩写为IoC)是一个重要的面向对象编程的法则来削减计算机程序的耦合问题,也是轻量级的Spring框架的核心. 控制反转一般分为两种类型,依赖注入 ...
- 控制反转和依赖注入(对IOC,DI理解+案例)
理解 控制反转说的官方一点就是面向对象编程中的一种设计原则,可以用来减低计算机代码之间的耦合度.其实就是一种设计思想,大概思想就是把设计好的对象交给容器控制,而不是在你内部直接控制. 依赖注入是控制反 ...
- 轻松了解Spring中的控制反转和依赖注入(二)
紧接上一篇文章<轻松了解Spring中的控制反转和依赖注入>讲解了SpringIOC和DI的基本概念,这篇文章我们模拟一下SpringIOC的工作机制,使我们更加深刻的理解其中的工作. 类 ...
随机推荐
- flash Timer 性能优化,每几秒间隔一次
timer.stop后timer.currentCount没有重置,timer.reset后,currentCount重置了. package game.mananger { import flash ...
- 几个与JVM相关的JDK工具:jps, jstat, jmap
在项目中遇到OOM(Out of Memory)的问题,为了分析内存和JVM的垃圾回收器GC问题,一并把JVM相关的一些工具也研究了一下: jps:Java进程查看工具,实际上它和Unix/Linux ...
- 【android】SDK在线升级
1.修改本地hosts文件 hosts文件位置:C:\Windows\System32\drivers\etc\hosts 在底部添加:203.208.46.146 dl-ssl.google.com ...
- python3_爬虫_爬百度音乐
工具及环境 1.操作系统:windows 64位系统 2.软件工具:谷歌浏览器.pycharm集成开发工具 3.第三方库:request 注:如果第三方库搭建有困难,请看博客:https://www. ...
- win10 svn commit无响应
只是发现其中的一个原因,发现.cs代码文件图标变红了,默认是用Code Writer打开,和SVN可能是冲突了,解决方式是用Code Writer打开一下.cs文件就可以了,原因可能是不打开一次Cod ...
- oracle link的创建过程
下面做一个测试,在测试中,创建数据库链接的库为XJ(WINDOWS 2003 ORACLE 10g 10.2.0.1),被链接的库为DMDB(LINUX AS5 ORACLE 10g 10.2.0.1 ...
- unicat,multicast,broadcast区别
单播.多播和广播单播”(Unicast).“多播”(Multicast)和“广播”(Broadcast)这三个术语都是用来描述网络节点之间通讯方式的术语.那么这些术语究竟是什么意思?区别何在? 1.单 ...
- 关于常见的协议BSD,APACHE,MIT,GPL的理解
其实BSD和APACHE和MIT协议类似,基本就是可以为所欲为,但是要尊重原来的作者. GPL协议是一个免费和开源的协议,只要用了GPL协议的类库源码等,也必须适应GPL协议. 意思就是把开源和免费进 ...
- 关于RDS for mysql中导入数据库set global event_scheduler =1 需要更多超级权限
关于RDS中导入数据库set global event_scheduler =1 需要更多超级权限 报错提示 其实这个意思是 让mysql自动启动 计划任务 如果在 命令行下 查询 SHOW VAR ...
- servlet笔记1
Myeclipse关于Servlet项目文件的组织方面,如下: WEB-INF:这个目录名称和位置是固定的,放置在该目录下的文件或目录,对外界来说的封闭的,也就是客户端无法用http的任何方式访问到其 ...