面向对象设计的理念是把整个系统分成一组可重用的组件,然而,当系统变得越大的时候,尤其是在java中,这最大的对象依赖将会紧紧耦合,以至于非常难以管理和修改,而现在,你可以使用Spring框架扮演一个中间模块的角色,方便高效地管理其他组件依赖

输出生成的例子

看个例子,假设你的项目有一个方法可以输出内容到csv或者json格式,你可能写出这样的代码

,然后是实现接口的类

再写个Json生成的类

有好几种方法来调用IOutputGenerator接口,以及我们如何使用Spring来避免对象的过度耦合。

方法1-直接调用

问题:

这种方法,output这个对象和CsvOutputGenerator耦合在了一起,每次要改变输出格式的话都要修改代码,如果这类代码遍布项目,那么改起来就跪了

方法2-通过帮助类调用

也许你会想创建一个Helper类吧所有的output实现都移进去

然后可以这样调用

问题:

看起来似乎更加优雅了,你仅仅需要管理这个Helper类就可以实现不同格式的输出需求改变了,然而,Helper还是和CvsOutputGenerator耦合,每一次要改变输出格式的时候,都要对Helper类做一下微调。

方法3-Spring

Spring依赖注入很合适,可以使不同的格式生成类分离开来

首先对OutputHelper做一点微调,添加了一个参数

然后创建一个Spring bean配置文件,并声明所有的Java对象依赖

然后通过Spring调用

以后要改Json格式,直接改一下xml配置文件就行了。能够减少错误

结论

通过Spring框架的依赖注入,可以优雅的管理对象依赖,更大的灵活性,尤其是对于Java项目非常好用。