这里遇到一个问题,就是我在一个Service A里写的一些业务处理代码,在另一个Service B里也想使用这段代码,如果直接copy的话就违反了代码复用原则,但是如果让B直接调用A的方法觉得比较怪,因为我是用Spring把Service直接注入Action中的,A和B之间没有直接的引用。
请问banq大哥,遇到这种情况你是如何解决的?
这里遇到一个问题,就是我在一个Service A里写的一些业务处理代码,在另一个Service B里也想使用这段代码,如果直接copy的话就违反了代码复用原则,但是如果让B直接调用A的方法觉得比较怪,因为我是用Spring把Service直接注入Action中的,A和B之间没有直接的引用。
请问banq大哥,遇到这种情况你是如何解决的?
如果是前者,那就是Service A调用Service B,毫无疑问。
如果是后者,你应该考虑将Service B的那段代码单独拿出来(放在哪里你自己考虑,当然不能放在Service B中),Service A和Service B都调用这段代码。
假如Spring的官方文档中提供了这种用法,你还会这么觉得吗?
事实上,你在设计Service的时候,就必须考虑Service之间是否允许相互调用,如果允许的话,采用何种方式进行调用,其约束条件是什么?
先别去考虑形式,到底是“注入”还是直接调用。如果你发现这两个服务确实是紧耦合的,就直接调用,如果你发现两者不是紧耦合的,就用注入。
将这段代码重构成一个新的类,service A和B共同调用
可以在Service下再加入一层