控制反转&依赖注入

控制反转&依赖注入英文是(Inverse Of Control & Dependency Injection)

控制反转:

  组件的依赖关系的创建和管理置于程序外部的技术。
  设计好的类,关联关系由IOC控制,不在类内部控制
  对象的创建和获取提取的到外部。
依赖注入:
   组件依赖外界注入,不需要再类中new出来
   实现了更加灵活的编程,实现了最佳松耦合,实现组建可拔插

例如:
控制反转前:
public class UserAction {
  private UserDao userDao = new UserDaoImpl();   //UserDao 只是接口,他的实例对象要有自己重建
  public String add(){
    User user = new User(0, "三","tiananmen", 23);
    userDao.save(user);   // 在这里使用的是 new UserDaoImpl() ,不便之处是实现类修改了这里要被修改,而依赖注入后,只需要修改配置文件或注解
    return null;
 }

控制反转后:
@Component(value="userAction")
public class UserAction {
  @Resource(name="udao")
  private UserDao userDao;  //UserDao 只是接口 //他的实现从外界注入,可以注入任意的他的实现类,而这里的代码不需要改动。既依赖注入
  public String add() {
    User user = new User(0, "三","tiananmen", 23);
    userDao.save(user);   //在这里没用实例化userDao,new的权利给了Ioc容器  return null;
 }

控制反转和依赖注入的关系:
  控制反转和依赖注入其实是一回事儿,只是谈的角度不同。控制反转可以从类的角度出发,他把控制权(如他的属性的初始化的权利)交给了容器,由容器管理;依赖注入可以从这个被“抛弃的”属性的角度理解,他需要容器注入。
  举个小例子:人遭到病毒袭击的时候会由免疫系统处理病毒,在病毒不是很厉害,变种不多的时候,我们可以通过自身的免疫系统产生免疫细胞把病毒处理掉。但是病毒多了,每个季节的流感病毒都有变种,(就像需求发生变化),人自身的免疫系统已经应付不过来了,就要把产生免疫能力交给医生,医生就是IOC容器,他能给你不同的药物,产生(new出)不同的免疫。这个new的过程不用人的免疫系统做了,产生免疫的能力交给医生,这就是控制反转。对于免疫来说,他现在不用人的免疫系统直接new了,而是依赖容器注入了,就是依赖注入。
  也就是说控制反转是从宏观的、抽象的、类的角度说的,依赖注入是从其微观的、具体的、对象和对象的属性角度来说的。而说的是同一件事儿:类中的关联的对象控制权(new的权利)交给了IOC容器.

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值