IOC(控制反转思想)原型理论推导

1.0时代:需要一个Dao层(接口+ImpL)、对应一个Service层(接口+ImpL)

1、Dao层封装了数据库操作,Service层 ImpL类 通过 new 一个Dao的ImpL类  并赋值给  Dao接口,实现对Dao层的调用,从而达到Dao层对于客户透明的目的。

2、具体代码:

private XXXDao xxxDao = new xxxDaoImpL()

 3、缺点:随着客户的需求不断改变,new 的ImpL类也要随之改变,高耦合

2.0时代:引入了Set进行动态注入ImpL类的思想

1、在Service层ImpL类中,不通过new的方法给Dao接口创建ImpL类,而是加入Set带参函数为Dao接口赋值

2、具体代码:

public void setXXXDao(XXXDao xxxDao){ this.xxxDao = xxxDao; }

3、优点:改变了程序主动创建对象的方式,通过Set带参函数变成了被动接受对象(反转控制),不再因为客户需求的迭代,而改变原有的代码,低耦合

 

抽象结果:(IoC容器)

 通常new一个实例,控制权由程序员控制,而“控制反转”是指new实例工作不由程序员来做而是交给Spring容器来完成。

   

原文地址:https://www.cnblogs.com/mo-jian-ming/p/13246285.html