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的工作机制,使我们更加深刻的理解其中的工作. 类 ...
随机推荐
- python(五):面向对象--类和实例
一.类的基本概念 类是用来创建数据结构和新类型对象的主要机制.一个类定义了一系列与其实例对象密切关联的属性.典型的属性包括变量(也被称为 类变量)和函数(又被称为方法). 1.class上下文 cla ...
- MyBatis_Study_003(字段名与属性名称不一致,resultMap)
源码:https://github.com/carryLess/mbtsstd-003 1.主配置文件 <?xml version="1.0" encoding=" ...
- RabbitMQ引入
引入MQ话题 可能很多人有疑惑:MQ到底是什么?哪些场景下要使用MQ? 前段时间安装了RabbitMQ,现在就记录下自己的学习心得吧.首先看段程序: class Program { static vo ...
- nexus bower 集成使用
创建nexus bower proxy host 比较简单,如下图: 安装bower && bower-nexus resolver npm install -g bower-nexu ...
- How To Enable EPEL Repository in RHEL/CentOS 7/6/5?
What is EPEL EPEL (Extra Packages for Enterprise Linux) is open source and free community based repo ...
- prefix sums--codility
lesson 5: prefix sums 1. PassingCars 2. CountDiv 3. GenomicRangeQuery 4. MinAvgTwoSlice lesson 5: pr ...
- 【nodeJS】webstorm中设置nodej智能提示
- 查询出结果 给其 加上序号的方法 msql
基本用法 SELECT @rownum := @rownum +1 AS rownum, e.*FROM (SELECT @rownum := 0) r , (select A.id,B.user_u ...
- app测试笔记记录
1. 個性簽名保存成功,toast提示“儲存成功” 解释: Toast是Android中用来显示显示信息的一种机制,和Dialog不一样的是,Toast是没有焦点的,而且Toast显示的时间有限,过 ...
- Bootstrap-CL:Well
ylbtech-Bootstrap-CL:Well 1.返回顶部 1. Bootstrap Well Well 是一种会引起内容凹陷显示或插图效果的容器 <div>.为了创建 Well,只 ...