使用JAVA实现的一个简单IOC注入实例

时间:2023-11-18 11:46:50

https://blog.****.net/echoshinian100/article/details/77977823

欲登高而望远,勿筑台于流沙

使用JAVA实现的一个简单IOC注入实例

2017年09月14日 11:12:38
阅读数:684

     控制反转IOC( Inversion of Control )也被称为依赖注入,简单的说,就是通过接口来实现两个类之间的弱引用,由一个第三方容器来专门管理这种依赖,负责实例化并注入接口的实现。
      由于一般都是通过构造函数注入接口的实现,因此也叫构造依赖注入。
      不废话,上代码:
      要求从控制台接收两个输入并分别执行三次求和,业务逻辑很简单。这里我们划分为业务逻辑层Business和调用层也就是应用层Application.

Setp1:定义接口

/**
* 定义业务方法接口
*/
public interface IAdd {
public void Add(String a,String b);
public void Add(int a,int b);
public void Add(float a,float b);
}

Setp2:具体业务类实现接口

/**
* IAdd接口的实现,具体业务类
* */
public class Bll implements IAdd { public void Add(String a, String b) {
System.out.println("现在执行字符串连接");
System.out.println(a+b);
} public void Add(int a, int b) {
System.out.println("现在执行整形求和");
System.out.println(a+b);
} public void Add(float a, float b) {
System.out.println("现在执行浮点求和");
System.out.println(a+b);
}
}

Step3:在业务类的构造函数中注入接口,使用接口的方法。此处是关键,业务类使用的接口方法,从而实现了和具体业务类的松耦合。

import java.io.BufferedReader;
import java.io.InputStreamReader; /**
* 构造依赖注入,从外部注入实现类
* 当前类为应用类
*/
public class Application { private IAdd _IAdd=null; public Application(IAdd IAdd)
{
this._IAdd=IAdd;
} public void Run()
{
float first=0,second=0; System.out.println("请输入第一个数字"); try
{
BufferedReader strin=new BufferedReader(new InputStreamReader(System.in));
first= Cast2Float(strin.readLine());
}catch(Exception e)
{
System.out.println("您的输入有误,请输入数字,程序退出!");
return;
} System.out.println("请输入第二个数字:"); try
{
BufferedReader strin=new BufferedReader(new InputStreamReader(System.in));
second= Cast2Float(strin.readLine());
}catch(Exception e)
{
System.out.println("您的输入有误,请输入数字,程序退出");
return;
} //调用字符串连接函数
_IAdd.Add(String.valueOf(first),String.valueOf(second)); //调用整形求和函数
_IAdd.Add((int)first,(int)second); //调用浮点求和函数
_IAdd.Add(first,second); } //对输入进行校验转换,如果转换异常抛出到上一层
private float Cast2Float(String input)throws Exception
{
if(input.length()==0){
throw new Exception();
}
return Float.parseFloat(input);
}
}

Setep4:构造第三方容器,由这个容器来负责实例化接口的实现并向应用类注入。在真实应用中,很多框架都包含这种功能,如spring mvc之类的,这类工具称为IOC容器,从而实现各个类之间的解耦。

/**
* IOC容器,为应用类Application注入业务接口实现
*/
public class IOCContainer { public static void main(String[] args)
{
//实例化IAdd接口的实现
Bll bll=new Bll();
//为应用类注入实现
Application app=new Application(bll);
//调用应用类
app.Run();
}
}

至此就完成一个简单的IOC模型。在真实的应用中,依赖控制的容器执行过程要复杂得多,需要很多运行时技术,根据不同的上下文来注入同一接口的不同实现等等。   

阅读更多
个人分类:
设计模式
想对作者说点什么?

我来说一句

(一)Spring 之IOC入门简单例子

1. IOC 和 DI 是什么
2.导入Spring 的jar 包
3.实现IOC简单例子的步骤

(一)IOC 和 DI是什么
IOC即控制反转,意思是对象的创建不通过 手动 new,而是把对象的...

使用JAVA实现的一个简单IOC注入实例
u014453898

2018-01-20 20:23:59

阅读数:1217

java 反射 模拟spring自动注入

基于反射和注解机制,简单模拟spring解析Autowired注解的过程。

1、自定义Autowired注解,代码如下

[java] view
plain copy...

使用JAVA实现的一个简单IOC注入实例
guicaizhou

2017-01-13 16:44:14

阅读数:537

Spring IOC 简单例子

结构图package henu.bean;

public interface Animal {

public void info();
}
package henu.bean;

public...

使用JAVA实现的一个简单IOC注入实例
weixin_38891150

2018-03-25 17:46:09

阅读数:176

深入理解IOC控制反转及应用实例

一、IOC雏形

1、程序V1.0

话说,多年以前UT公司提出一个需求,要提供一个系统,其中有个功能可以在新春佳节之际给公司员工发送一封邮件。邮件中给大家以新春祝福,并告知发放一定数额的...

使用JAVA实现的一个简单IOC注入实例
lqw05

2016-08-14 16:29:01

阅读数:2440

Spring中IoC的入门实例

2012年12月17日
72KB
下载

使用JAVA实现的一个简单IOC注入实例
使用JAVA实现的一个简单IOC注入实例

相关文章