spring松耦合

来源:互联网 发布:淘宝类目没有颜色分类 编辑:程序博客网 时间:2024/05/16 19:09


假设
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();


0 0
原创粉丝点击