反射控制IoC的概念

来源:互联网 发布:吉他伴奏软件 编辑:程序博客网 时间:2024/05/17 07:42

反向控制也称为依赖注入,是一种降低对象耦合的设计思想。一般在分层体系结构中都是上层调用下层,调用者依赖被调用者。通过IoC的方式,可以使上层不再依赖下层接口。它通过注入一个实例化对象达到解耦的目的。使用这种方法的对象不会被显式调用,而是由IoC容器提供。

对于实现基类的不同实现类问题,AbstractClass c1=new SubClassA()能够完成功能。但问题在于换用其它基类实现类如SubClassB时代码需要大量改动。
较好的办法是用工厂设计模式将创建对象的行为包装起来,获取业务类只需要调用Factory.getClass()获取。具体由哪个实现类创建对象,的代码写在Factory中。当更换业务类中需要重写Factory的逻辑即可。
最好的办法是采用Ioc的设计思想,由Spring容器配置文件创建调用者对象,然后把被调用者对象的实例通过”构造注入”或”set注入”到调用者对象。
SpringConfig.xml配置文件(构造注入的方式):

<beans>    <bean id="transfer" class="TransferClass" singleton="false">        <constructor-arg>            <ref bean="abstract" />        </constructor-arg>    </bean>    <bean id="abstract" class="AbstractClass" sinleton="false" /></beans>业务类代码:public class TransferClass {    private AbstractClass c1;    public TransferClass(AbstractClass c1){        this.c1=c1;    }    //使用c1的代码}

使用调用类的代码:

ApplicationContext ac=new FileSystemXmlApplicationContext("SpringConfig.xml");TransferClass tc=(TransferClass)ac.getBean("abstract");

Ioc反射控制的优点:
1) 无需关心对像的创建,只需要修改配置文件就能完成实现类的替换。
2) 通过配置文件能知道注入的实例对象,易于测试。
Ioc反射控制的缺点:创建对象的过程变复杂了,且通过反射机制实例化对象性能有所下降。

0 0
原创粉丝点击