传统MVC存在的问题
web开发中MVC已经是一个常见的结构了,然而对于稍微复杂的项目还是有一些问题:
- 业务代码写在model层,导致model越来越臃肿,新旧业务、不同场景杂糅,越来越难以维护。
- 复杂业务同时设计多个model(多张表),到底应该放在哪个model里?
- 网上有的说MVC导致代码难以测试什么的,其实并不是这样,代码写在model里和写在service里都是可以单元测试的。这里主要还是写在model里太臃肿的问题(第1点)
- 代码复用的问题。
一般model都是orm映射数据库的,所以在这里写完的代码是直接进出数据库的。那么问题来了,如果我在不同的场景对数据进行不同处理呢?比如:自己可以看自己的手机号,别人看到的是加密后的手机号。为了安全问题,需要在后端就加密好再传到前端,那么这个加密我就只能写在controller里。那么需要在另一个接口看到自己的手机号呢?是不是得再写一遍?当然这只是一个很简单的场景,有更好的例子欢迎补充。
更合理的代码分层
接下来说说为了解决上面的问题,我个人在代码结构上总结的方法:
通过添加service层、repositor