前几天在社区(点击加入)看到有人在讨论Service层接口的问题。DD也经常遇到身边的新人问一些类似的问题:是不是一定要写Service层的接口?Service层的接口有什么用?好像没用?在我看来,Service层在业务逻辑不复杂的时候好像没什么用,但是随着应用的迭代,业务逻辑就变得复杂了,这一层非常有用。主要表现在以下几个方面:1、更适合处理复杂的业务逻辑,可能涉及到多张表的操作,甚至是消息传递、接口调用等一系列复杂而综合的事务。常说的事务管理级别。2、对于表现层的多路复用支持,往往我们的业务逻辑处理不会只应用到一个API接口或者页面上。如果将这部分内容直接写到Controller中,那么当出现重复操作时,就会产生Copy和paste,以后维护这个逻辑会很麻烦。3.支持单元测试,通过单独的服务层来实现业务逻辑,那么针对业务逻辑的单元测试会更容易写,只需要测试服务来写就够了;而web层的单元测试不需要关注业务本身,只需要关注反馈格式即可;否则web层不仅要考虑业务逻辑的计算,还要考虑web反馈的格式校验,太复杂了。4、业务逻辑的组装支持,因为Controller依赖于Service接口的定义,具体实现有很多。可以根据不同的需求注入不同的实现,更好的实现多个业务逻辑版本的共存。但是如果业务逻辑直接写在Controller中,需要替换的时候会比较麻烦。因此,Service层的设计是非常有必要的,它在单体应用的可维护性和可测试性中占有非常重要的地位。给你想想,你觉得Service层接口有必要吗?
