spring中依赖注入的思考

spring中依赖注入的思考

平时在自己的项目开发过程中,定义服务接口,编写服务实现类,

然后依赖注入各种用到的功能,有dao层做数据库查询,有其他服务

发现依赖注入越来越多,这样是否合理呢?

gpt4给了我答案

1.可能我违背了服务的单一职责,承担了过多的功能
2.高层模块不应该依赖底层模块,是否有问题
3.是否拆分的不够细

一个服务实现类中依赖注入了大量其他服务、DAO层对象、线程池等,可能表明该服务承担了过多的职责,这违反了单一职责原则(Single Responsibility Principle,SRP),这是面向对象设计的基本原则之一。单一职责原则认为一个类应该只有一个改变的理由。

不合理的原因
职责过重:服务类承担了过多的职责,使得该类变得复杂,难以维护和测试。
难以测试:依赖过多使得单元测试变得复杂,需要模拟更多的依赖。
难以理解:新的开发人员可能会发现难以理解这个类的功能和它与其他部分的交互。
变更影响大:一个依赖的变化可能影响到服务的多个方面。
依赖注入的字段数量
没有硬性规定一个类中依赖注入的字段不得多于多少个,因为这取决于具体情况。不过,遵循一些设计原则和最佳实践可以帮助判断:

单一职责原则:每个类应该只负责一件事情。
接口隔离原则:不应该强迫一个类依赖于它不使用的方法。
依赖倒置原则:高层模块不应依赖于低层模块,两者应该依赖于抽象。
最少知识原则:一个对象应该尽可能少地了解系统的其他部分。
解决方法
如果一个类的依赖注入过多,可以考虑以下解决方法:

拆分类:根据功能将大类拆分成多个小类,每个类负责一部分功能。
引入中介者:如果多个服务经常一起使用,可以创建一个中介者服务来封装这些服务的协作。
使用门面模式:为复杂的子系统提供一个简化的接口。
重构代码:通过重构代码,可能可以减少对某些依赖的需求,例如通过合并相似功能、删除不必要的功能等。
在实际开发中,应该根据项目的具体情况和团队的约定来决定。通常,当你发现一个类的依赖项超过三到五个时,就应该开始考虑是否需要对该类进行重构。
posted @ 2024-01-31 16:01  SpecialSpeculator  阅读(5)  评论(0编辑  收藏  举报