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的工作机制,使我们更加深刻的理解其中的工作. 类 ...
随机推荐
- Linux性能评估命令
Linux性能评估工具 https://www.cnblogs.com/dianel/p/10085454.html Linux性能评估工具 目录 介绍 负载:uptime 查看内核的信息: dmes ...
- 2018-2019-2 《网络对抗技术》Exp3免杀原理与实践 20165222
1. 实践内容 1.1 正确使用msf编码器 使用 msfvenom -p windows/meterpreter/reverse_tcp -e x86/shikata_ga_nai -i 7 -b ...
- 打造jQuery的高性能TreeView
UPDATE:回答网友提出的设置节点的自定义图片的问题,同时欢迎大家提问,我尽量在第一时间回复,详见最后 2009-11-03 项目中经常会遇到树形数据的展现,包括导航,选择等功能,所以树控件在大多项 ...
- bitmapdata的知识点
flashplayer的cpu渲染 bitmapData占用的内存分两块,一块是原始数据区,另一块是解压后的内存区10秒内如果没有使用这个bitmapdata,解压后的内存区会被释放,当10秒后重新使 ...
- macdown在mac OS 中的配置
macdown 用命令行打开.md文件 执行两条命令即可. sudo echo "open -a MacDown \$*" > /usr/local/bin/macdown ...
- noip2009最优贸易(水晶球)
题目:http://codevs.cn/problem/1173/ https://www.luogu.org/problemnew/show/P1073 本来考虑缩点什么的,后来发现不用. 只要记录 ...
- TimeHelp 获取时间戳转换类
using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace Shar ...
- 记录tomcat的完整日志
Tomcat报的错太含糊了,什么错都没报出来,只提示了Error listenerStart.为了调试,我们要获得更详细的日志.可以在WEB-INF/classes目录下新建一个文件叫logging. ...
- mysql 使用inet_aton和inet_ntoa处理ip地址数据
mysql 使用inet_aton和inet_ntoa处理ip地址数据 mysql提供了两个方法来处理ip地址 inet_aton 把ip转为无符号整型(4-8位) inet_ntoa 把整型的ip转 ...
- POJ 2777-题解
一.题意 给你一排N个格子,M种颜色,P个操作.有两种操作:(1)C A B D:把[A, B]区间内的所有格子涂成颜色D.(2)P A B:输出[A, B]区间内的颜色的种类数.注意,初始颜色为1. ...