spring松耦合


假设
AClass和BClass都implement了接口AInterface的方法fun
调用的时候
要不 AInterface obj = new AClass();
要不 AInterface obj = new BClass();
然后 obj.fun();



因为老子的代码中有很多这样的的代码段
AInterface obj = new AClass();
obj.fun();


老子想拿BClass替换AClass时,只想改配置文件,代码不想改。
也就是老子现在就想写这样的代码
AInterface obj = new xxxx();
xxxx.fun();


当使用spring实现时

新建一个辅助类
public class AHelper{
    AInterface interface;
    public void fun(){
        this.interface.fun();
    }
    public void setInterface(AInterface input){
        this.interface = iput;
    }
}


配置文件中,将AClass替换成BClass就能完成切换
<bean id="AHelper" class="AHelper">
        <property name="interface" ref="a" />//将成员变量interface注入成AClass

//这里用的是ref,而不是value,因为AHelper中的成员interface不是一个简单的值,

//如果他是简单的string,int就能用value,于是这里只能指定bean的id了,用ref,不用value

//就相当于new AClass,然后给interface赋值这个new出来的对象。

</bean>
<bean id="a" class="AClass" />
<bean id="b" class="BClass" />


这样就能达到目的
AHelper h = (AHelper)context.getBean("AHelper");
h.fun();


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值