Ioc给程序带来的好处

loc给程序带来的好处

 IOC(inversion of control)的中文解释是“控制反转”或者“依赖注入”,它的实现目的是:我们可以通过配置文件来控制程序的流程,达到程序代码的优化。初学者往往弄不清楚为什么我们可以通过“控制反转”或“依赖注入”来优化我们的代码。今天我想借这个机会说说我对IOC程序设计原则的认识,以及它是怎么样把我们的程序弄“活”的。
一,名词解释 
首先我想说说我对“控制反转”和“依赖注入”的认识
     。1,控制反转:
     对于初学者来说,我们平时写代码,“一段代码会完全控制了程序的流程”,因为我们习惯于用新的关键字来创建对象,再通过对象来调用它的方法。对于我们来说,这是再正常不过的了,可是如果此时我们的需求发生了一点改变,我们就不得不修改源代码,这就是我们常讲的“硬编码(硬编码)”,而修改源代码是程序设计的 ,这违反了程序设计的“开闭原则”,即对扩展是开放的,对修改是关闭的。

的的的Java代码  


//代码示例:  
public class Animal {  
public void eat() {  
        System.out.println(" 动物 吃东西了!");  
    }  
}  
public class Pig extends Animal{  
public void eat() {  
        System.out.println(" 小猪 吃东西了!");  
    }  
}  
public class Dog extends Animal {  
public void eat() {  
        System.out.println(" 小狗 吃东西了!");  
    }  
}  
public class Project {  
    public static void main(String[] args) {  
        Animal pig = new Pig();  
        pig.eat();  
    }  
}  

 

     当我们写完代码时,我们的程序只能执行小猪吃东西,可是如果此时需求要求我们要小狗吃东西,是不是我们的代码又要变了呢。此时我们引入了配置文件,我们事先在配置文件中已经配置好了该是谁吃东西,等到程序运行时,程序会读取配置文件中的值通过反射机制创建一个我们需要的对象,再调用它的食用方法就ok了了了了。这样看来,我们程序的执行流程控制权是不是转交给了配置文件了呢,而程序代码自己却成了被控制的对象,这就是实现了“控制反转”了
      。2,依赖注入:
在讲依赖注入之前,我想先讲一讲依赖注入的三种实现方式。
(1)构造注入,是通过构造器方法注入实例变量

的的的Java代码  收藏代码

public class Car {  
public void move(){  
        //••••  
    }  
}  
public class People {  
    private Car car;  
    public People(Car car) {//构造注入  
        this.car=car;  
    }  
    public void move(){  
        car.move();  
    }  
}  

 (2)设值注入,是通过设置器方法注入实例变量

的的的Java代码  收藏代码

public class People {  
    private Car car;  
    public People(Car car){//构造注入  
        this.car=car;  
    }  
    public void setCar(Car car) {//设置注入  
        this.car = car;  
    }  
    public void move(){  
        car.move();  
    }  
}  

 (3)接口注入,是通过接口方法注入实例变量

的的的Java代码  收藏代码

public interface AbstractCar {  
    public void move();  
}  
public class Car {  
public void move(){  
        System.out.println("车开了");  
    }  
}  
public interface AbstractPeople {  
    public void move();  
}  
public class People {  
public void move(AbstractCar car){//接口注入  
        car.move();  
    }  
}  

问题思考:注入依赖什么呢有英文作用英文英文
      此时我们还无法回答这个问题,可是当我们考虑到配置文件时,我们就豁然开朗了,不管是哪种注入方法,目的都是给我们的程序传。入一个实例变量而这个实例变量我们可以事先在配置文件中配置,当程序运行时就可以读取配置文件,通过反射机制来创建所需的对象了,如果此时我们的需求发生了变化,我们也只需改一下配置文件就OK了。这里有些人可能会认为这也修改了文件呀,为什么修改配置文件就可以了呢。呵呵,其实配置文件是不需要编译的,我们可以随时修改配置文件,而不需要通过更改一行源代码的方法就实现了程序流程的控制。这就是ICO的妙处哦~
      3,IOC容器
使用IOC后,我们不需要自己去创建某个类的实例,而由IOC容器去创建,当我们需要使用某个对象时,直接到容器中去获取就可以了在有许多非常优秀的IOC容器,比如弹簧等。
 二,理解综合 
       的英文什么意思?求最后我想用一个图产品产品来表示我对国际奥委会的理解

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值