反射控制IoC的概念

反向控制也称为依赖注入,是一种降低对象耦合的设计思想。一般在分层体系结构中都是上层调用下层,调用者依赖被调用者。通过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反射控制的缺点:创建对象的过程变复杂了,且通过反射机制实例化对象性能有所下降。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值