控制反转IOC(Inversion of Control),是一种包装技术类型,它本身不属于新的内容,说的再简单一点,所有对象的实例化操作都不再使用关键字new了(反射机制).
那么为什么现在的代码之中需要编写控制反转的操作呢?为了更好的解释这个问题.下面编写一个实际的程序分析.
如果员工出差,那么员工所需要做的核心处理--办理核心的操作业务,出差的目的,但是发现,要想实现这个目的现在有了困难,所有的一切都要求用户自己来负责处理.
那么这样的操作形式就好比最早自己手工编写代码的时候必须明确的处理关键字new一样,
范例:传统代码问题
package cn.zwb.dome; interface Fruit{ public void eat(); } class Apple implements Fruit{ @Override public void eat() { System.out.println("吃苹果"); } } public class TestDomeA { public static void main(String[] args) { Fruit f=new Apple(); f.eat(); } }但是现在的问题在于耦合度加深了,因为某一个接口必须要与一个子类产生关联,
如果中间出现了代理公司,那么整个操作的过程之中,员工只需要自己去跟代理公司操作就可以完成所有与出差有关的业务处理,但是前提:用户依然需要关注代理公司的处理过程.
范例:就好比代码之中使用了工厂设计模式
package cn.zwb.dome; interface Fruit{ public void eat(); } class Apple implements Fruit{ @Override public void eat() { System.out.println("吃苹果"); } } class Factroy{ public static Fruit getFruit(){ return new Apple(); } } public class TestDomeA { public static void main(String[] args) { Fruit f=Factroy.getFruit(); f.eat(); } }
加入工厂设计之后最大的优点在于,整个的代码在操作过程之中,只会与工厂类发生耦合,工程想想成代理公司,这个代理公司需要开发者明确使用.
现在的"管理部门"就属于整个代码的运行容器,只要在这个容器里面运行的操作都可以得到相应的辅助操作支持.
那么这就属于IOC的操作,所有的辅助控制都交由容器完成.