当你有两个service,比方说一个叫做Aservice,一个叫做Bservice。
1.此时在Aservice中你有一个方法叫做method-a,然后在Bservice中某一个方法method-b需要使用到method-a,此时你在Bservice中注入Aservice。
2.此时在Aservice中有一个方法叫做method-aa,需要使用到Bservice中的某一个方法method-bb,此时你在Aservice中注入Bservice。
然后当你运行的时候——
报错!
OK,大概的一个场景就是这么个样子。
那么如果解决呢?
①一个笨方法就是将第二条中的method-bb的方法内部所有代码,都copy到method-aa中。
但是这样做现实吗?不仅代码重复,而且还可能method-bb中还使用了其他service中的方法,那么难道还要把其他service方法中的代码也全部copy过去吗?
所以说,这是个不实用的方法。
②建立manager层:
简而言之就是再抽象出来一层叫做manager层的东西,将一些会被多个service复用的代码写到这个地方。
就拿上面的例子来说:
将method-a中的代码写在Amanager中的方法名叫做manager-method-a,当Aservice中method-a需要使用的时候,注入Amanager,然后在方法method-a中调用即可。同理,Bservice中的method-b需要使用到manager-method-a中的代码,也将Amanager注入,然后调用即可。
manager层有必要吗?
当无复用的时候,没有必要,代码量小的时候,没有必要;但是在越来越复杂的系统中,有一个良好的规划,是必要的,也是发展的必然途径。所以总结来看,为了更美好的明天,还是有一定的必要性的。
当然,一切都要根据实际情况来进行选择和使用,以上。