聊一聊:Service层你觉得有用吗?

开发 开发工具
Service层在业务逻辑不复杂的时候,似乎是没有什么用,但是随着应用迭代,业务逻辑变得复杂了之后,这一层是非常有用的。

[[379185]]

前段日子在社群(点击加入)里看到有人讨论关于Service层接口的问题,DD也经常碰到周围的新人有问过一些类似的问题:一定要写个Service层的接口吗?Service层的接口到底用做什么用的呢?好像都没什么用啊?

我的看法

Service层在业务逻辑不复杂的时候,似乎是没有什么用,但是随着应用迭代,业务逻辑变得复杂了之后,这一层是非常有用的。

主要表现在这几个方面:

1、更适合用来处理复杂的业务逻辑,可能会涉及多张表的操作,甚至还混杂着消息投递、接口调用等一系列的复杂综合性事务,这也是我们常说的事务管理所处的层次。

2、对表现层的复用支持,往往我们一个业务逻辑处理,不会单单只应用在一个API接口或页面上,如果直接把这部分内容写到Controller中,那当出现重复操作的时候就会产生复制黏贴,以后再要维护这段逻辑就麻烦了

3、对单元测试的支持,通过单独的一层service实现业务逻辑,那么对于业务逻辑的单元测试会更容易编写,只需要对service来编写就可以了;而web层的单元测试就不需要关注业务本身,只需要关注反馈格式就行了;不然web层就既要考虑业务逻辑的计算,还要考虑web反馈的格式验证,太过复杂。

4、业务逻辑的组装支持,因为Controller中依赖的是Service接口的定义,而具体实现可以有很多种,随着不同的需要可以注入不同的实现,可以比较好的实现多种业务逻辑版本共存。而如果直接把业务逻辑写了Controller,再要替换的时候,就比较麻烦了。

所以,Service层的设计是非常有必要的,这在单体应用的可维护性和可测试性上都占据了非常重要的地位。

换你思考了,你觉得Service层接口是否必要呢?

责任编辑:武晓燕 来源: 51CTO专栏
相关推荐

2021-01-26 05:06:24

LinuxXargs 命令

2021-02-26 08:46:46

PHY寄存器网络

2021-07-01 19:22:33

脚本Shell参数

2018-06-07 13:17:12

契约测试单元测试API测试

2021-01-08 05:16:01

5G4GRRU

2023-09-22 17:36:37

2021-01-28 22:31:33

分组密码算法

2020-05-22 08:16:07

PONGPONXG-PON

2020-06-28 09:30:37

Linux内存操作系统

2022-10-08 11:33:56

边缘计算云计算

2022-03-08 16:10:38

Redis事务机制

2020-09-08 06:54:29

Java Gradle语言

2021-01-01 09:01:05

前端组件化设计

2018-01-10 14:13:04

测试矩阵API测试

2022-11-26 00:00:06

装饰者模式Component

2020-08-12 08:34:16

开发安全We

2019-12-17 10:06:18

CDMA高通4G

2022-03-29 09:56:21

游戏版本运营

2019-10-16 09:37:33

流行监控系统

2023-07-26 07:24:07

点赞
收藏

51CTO技术栈公众号