使用JAVA实现的一个简单IOC注入实例
2017-09-14 11:12
821 查看
控制反转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:具体业务类实现接口
由于一般都是通过构造函数注入接口的实现,因此也叫构造依赖注入。
不废话,上代码:
要求从控制台接收两个输入并分别执行三次求和,业务逻辑很简单。这里我们划分为业务逻辑层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--设值注入)---使用xml简单配置文件---的具体实例的简单实现
- spring 框架中的依赖注入(IOC--设值注入)--使用注解--的具体实例的简单实现
- java中读写锁的实现及使用读写锁简单实现缓存系统的实例
- 在Java中使用多线程结合断点续传实现一个简单的文件下载器
- 使用wxpython实现的一个简单图片浏览器实例
- 使用Node.js实现一个简单的FastCGI服务器实例
- IoC原理-使用反射/Emit来实现一个最简单的IoC容器
- Java实现一个小说采集程序的简单实例
- 使用阿里大于接口实现一个简单的短信验证(Java版)
- [Java]使用HttpClient实现一个简单爬虫,抓取煎蛋妹子图
- 用java的spring实现一个简单的IOC容器示例代码
- Java使用异或运算实现简单的加密解密算法实例代码
- Java中读写锁的实现及使用读写锁简单实现缓存系统的实例
- 使用DOM和java反射实现简单的SpringIOC
- 使用MongoDB和JSP实现一个简单的购物车系统实例
- java中读写锁的实现及使用读写锁简单实现缓存系统的实例
- 简单完整的代码,通过这个代码你将对RSA加密算法在Java中的实现方法有一个初步的了解,这个类,你可以直接使用,水平高的,就自己修改完善下代码。
- java 使用线程做的一个简单的ATM存取款实例代码
- 使用MongoDB和JSP实现一个简单的购物车系统实例
- 使用XPath解析xml实现简单的Spring IOC完成bean的依赖注入