摘要
mvc是一种软件设计模式,最早由Trygve Reenskaug在1978年提出,他有效的解决了表示层,控制器层,逻辑层的代码混合在一起的问题,很好的做到了职责分离。但是在实际的编码实践过程中,你会发现这个模式随着业务的扩展,变的逻辑混乱,代码重合度很高。这里提出借鉴DDD思想的一种新的工程结构
mvc的问题
通常一个前后端分离的系统,后端工程系统结构图通常下面这样
-
四层 controller/service/manager/mapper
-
不可以同级调用
-
上级可以知晓下级,下级不可知晓上级,也就是bean的转化放在上级
这个分层结构职责分离是按照纵向切分的
-
资源服务层repository是面向DB编程
-
service层是面向前端页面编程。
也就是说,对于某一块的业务,他没有将逻辑抽象到一起,他只是将一次request按照纵向切分了。没有进行横向的业务切分。这样将会导致的问题职责分散,逻辑重复度高
- bean的创建太随意,基本就是一个需求对应一些dto, vo,query bean
- 不同开发者对于同一个领域的东西有不同的bean,同一个开发者对于相同逻辑的bean,过了几个月,又定义出一个差不多的bean
没有边界
- 根本没有上下文/边界的概念,比如说店铺会和用户有交互,订单会和用户有交互,通常在DB存储时只会存关联id,然后需要去取对应的名称,其他属性信息。这些信