分层领域模型解读
引言
最近在开发项目的时候碰到了领域模型,但是并没有对其中的各层关系以及各层传递数据方式理解清晰。在此记录下分层领域模型数据的传递过程
所谓领域模型
所谓领域模型,其实就是C++类,再详细一点就是有作用范围的实体类。
其核心目标是业务抽象:将现实业务中的实体、流程和规则转化为可被代码理解和操作的结构。
其中的领域对象描述是这样的:
DO
(Data Object):此对象与数据库表结构一一对应,通过DAO
层向上传输数据源对象。DTO
(Data Transfer Object):数据传输对象,Service 或 Manager 向外传输的对象。BO
(Business Object):业务对象,可以由 Service 层输出的封装业务逻辑的对象。Query
:数据查询对象,各层接收上层的查询请求。VO
(View Object):显示层对象,通常是 Web 向模板渲染引擎层传输的对象。
举个栗子
订单领域模型
1 | 聚合根:Order(订单) |
很明显可以看出领域模型与数据模型不同,领域模型的代码直接反映业务概念,领域模型关注行为,而数据模型关注存储。领域模型的业务逻辑独立于基础设施,每个微服务对应一个限界上下文,领域模型帮助定义服务边界。最重要的是有限界上下文,要明白模型的边界。而且领域模型也不等同于数据库表,模型可以随业务需求演进,而非受限于数据库结构。
总结
领域模型是以业务为核心的设计方法,通过抽象关键概念、规则和交互,帮助开发者构建灵活、可维护的系统。它不仅是技术工具,更是一种思维方式,强调从业务视角出发解决问题。