Spring中的依赖注入为什么能够降低类之间的耦合?

2023-05-16

在MVC设计模式中,我们都知道controller层依赖service层,service层依赖dao层,我一直很好奇为什么不直接在service中new出一个dao实现类的实例,于是带着这个问题,我去网上找了一下答案,很多的答案都是各种官方的话语,而且复制粘贴的现象很严重,大多数都只是说如果要修改new出来的实现类的时候,会导致整个项目的更改变得麻烦,对于这样的解释,我还是不明白时什么意思。
知道我在百度知道上看到了一个例子能够很好的说明这一点:

首先我们定义一个Dao接口,假设接口中有一个selectXXX的获取数据库中数据的方法

interface xxxDao{
	public int selectXXX(String id);
}

然后我们定义这个Dao接口的实现类:

class xxxDaoImpl{
    @Override
    public int selectXXX(String id){
         return "取数据的方法一";
     }
}

定义一个Test类来执行,我们通过new出一个dao的实现类对象出来:

public class Test{
    public static void main(String[] args){
        xxxDao dao = new xxxDaoImpl();
        dao.selectXXX(1);
    }
}

这样看起来没什么毛病。
但是如果有一个我想改变dao实现类的实现方式,新造出一个xxxDaoImpl2这个类出来,那么我们需要去每一个new出xxxDaoImpl的源文件中去修改这条语句,这样就很麻烦了。
但是如果我们用的时依赖注入的方式,我们只提供一个dao接口的引用,然后在程序运行时动态地将dao的实现对象注入到依赖它的类中,我们就解决了这个问题。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Spring中的依赖注入为什么能够降低类之间的耦合? 的相关文章

随机推荐