DDD领域驱动设计-分层架构实践

代码结构

项目是使用maven构建的springboot项目

基于DDD领域驱动分层架构设计,分为接口层interfaces、应用层application、领域层domain、基础设施代理层infrastructure-proxy 、基础设施实现层infrastructure。代理层的作用下面会详细介绍。starter是启动模块,common是通用工具模块

starter

springboot的启动入口

common

本层提供一些通用的工具类和方法

interface

封装应用服务对外暴露接口
主要存放用户接口层,包括与前端交互的http接口、提供给外部的微服务接口等。微服务接口的声明单独放在一个子module里,将jar包发布给外部。
前端或外部应用通过这层接口,向应用服务获取展现所需的数据。这层主要用来处理用户发送的Restful请求或微服务请求。

application

主要存放应用层服务组合和编排相关的代码。
应用服务向下基于微服务内的领域服务或外部微服务的应用服务完成服务的编排和组合,向上为用户接口层提供各种应用数据展现支持服务。应用服务和事件等代码会放在这一层目录里。

domain

主要存放领域层核心业务逻辑相关的代码。领域层可以包含多个聚合代码包,它们共同实现领域模型的核心业务逻辑。聚合以及聚合内的实体、方法、领域服务和事件等代码会放在这一层目录里。
Domain 由一或多个聚合包构成,共同实现领域模型的核心业务逻辑。

infrastructure-proxy

本层抽象出基础设置层所有功能的接口,由基础设施层进行实现,这样其他使用基础设施层能力时不依赖于具体基础设施层了,达到其他层和基础设施层的解耦,从而后续可以很快速的实现基础设施层具体中间件的实现的替换。例如替换数据库,替换缓存中间件,不需要变动其他层代码。

infrastructure

主要存放基础资源服务相关的代码,主要包括平台、开发框架、消息、数据库、缓存、文件、总线、网关、第三方类库等基础代码,可以为不同的资源类别建立不同的子目录。

规范说明

  • 跨多个实体的业务逻辑通过领域服务来实现,跨多个聚合的业务逻辑通过应用服务来实现。
  • 中间件(消息、数据库、缓存、文件存储等)相关maven依赖只在基础设施层中有。
  • 微服务订阅方在应用层采用监听机制,接收消息队列中的事件数据,完成事件数据的持久化后,就可以开始进一步的业务处理。领域事件处理可在领域服务中实现

领域事件说明

在这里插入图片描述

  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
抽奖系统是一种常见的应用,在设计抽奖系统时,使用基于领域驱动设计(Domain-Driven Design,DDD)的四层架构可以提供更好的架构实践。 在四层架构中,首先是用户界面层(User Interface Layer),用户界面层负责向用户展示抽奖界面,并接收用户的输入请求。用户界面层可以采用Web页面、移动应用等形式实现。通过使用领域驱动设计,用户界面层可以更加贴近用户需求,提供更好的用户体验。 接下来是应用层(Application Layer),应用层是整个抽奖系统的核心。应用层负责处理用户请求,协调各个领域对象之间的交互,并调用相应的领域服务和聚合根进行业务逻辑的处理。应用层在领域驱动设计中起到了承上启下的作用,通过定义和实现各种用例和操作,实现了系统的功能。 在领域层(Domain Layer)中,定义了抽奖系统中的核心业务逻辑。领域层包含了各种实体、值对象、聚合根等领域对象,通过这些领域对象的交互实现了系统的业务流程。在抽奖系统中,可以定义抽奖活动、参与者、奖品等领域对象,并在领域层中定义它们的行为和属性,从而满足系统的各项业务需求。 最后是基础设施层(Infrastructure Layer),基础设施层提供了抽奖系统运行所需的各种支持服务,包括数据库、缓存、消息队列等。在抽奖系统中,基础设施层可以提供参与者信息的持久化存储、抽奖结果的发送等功能。通过将基础设施逻辑与领域逻辑相分离,可以提高系统的可维护性和可扩展性。 综上所述,基于领域驱动设计的四层架构可以有效地设计和实现抽奖系统。通过将系统的核心业务逻辑与界面、应用和基础设施进行分离,可以实现系统的高内聚、低耦合,提供更好的扩展性和可维护性。同时,领域驱动设计还能够更好地满足用户需求,提供更好的用户体验。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值