我遇到了一些在 spring 框架中使用的 java 类。首先,applicationContext.xml 中有 bean

<bean id="someBean" parent="txProxyTemplate">
    <property name="target">
        <bean class="path.to.bean.impl.SomeBeanImpl">
            ...
        </bean>
...
</bean>

我有接口(interface) ISomeBean 和它的实现 SomeBeanImpl然后,我有另一个使用 ISomeBean 的类。
public class SomeOtherClass {
  ...
    public function doStuff() {
        ...
        ApplicationContext ctx;
        SomeBean theBean = (SomeBean) ctx.getBean;
   }
}

我想知道为什么我们要转换到接口(interface)而不是转换到类。

最佳答案

为什么要将 SomeOtherClass 绑定(bind)到特定实现?使用该接口(interface),您会获得松散耦合 - 您可以针对假实现进行测试,或者稍后切换到不同的实现。

这是控制反转的很大一部分好处 - 您与依赖项的耦合不像直接在类中实例化它们那样紧密。

关于java - 为什么转换为接口(interface)而不是转换为类 java?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/8093501/

10-13 06:31
查看更多