领域驱动设计

DDD的代码结构_ronshi的博客-CSDN博客_ddd代码结构

DDD( 领域驱动设计)概念来源于2004年著名建模专家eric evans的书籍:《domain-driven design –tackling complexity in the heart of software》(中文译名:领域驱动设计—软件核心复杂性应对之道)。

DDD领域驱动设计,代码层次结构分为五层:adapter层、client层、app层、domain层、infrastructure层。如果是web服务,则包含adapter层。如果是业务服务,则可以去掉adapter层。

一、adapter层

adapter层主要是根据请求来源或类型进行适配,对app层的结果进行封装。

com.域名.项目名
├── adapter // 适配层模块
│ └── web // 网页端
│ └── mobile // 手机端
│ └── service // 服务端
二、client层

client层是对外提供的SDK,包含API的定义,以及数据传输对象。

com.域名.项目名
├── client // sdk模块
│ └── api // 网关实现层
│ └── dto // 数据接口
三、app层

app层是应用层,主要负责领域的整合和事务的管理,以及定时任务和消息的处理。

com.域名.项目名
├── app // 应用模块
│ └── executor // 执行层
│ └── query // 查询层
│ └── command // 命令层
│ └── consumer // 消息层
│ └── scheduler // 定时任务
四、domain层

domain层是领域层,主要是聚合的划分,包括聚合根、实体、值对象,以及领域能力和网关接口。

com.域名.项目名
├── domain // 领域层模块
│ └── model // 模型层
│ └── aggregate // 聚合层
│ └── entity // 实体层
│ └── valueobject // 值对象层
│ └── ability // 领域能力层
│ └── gateway // 网关接口层
五、infrastructure层

infrastructure层是基础设施层,采用了依赖倒置的原则,infrastructure层依赖于domain层,是领域层网关的具体实现。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
领域驱动设计(DDD)是为了解决复杂业务领域建模和设计问题而提出的一种方法论。以下是需要采用领域驱动设计的一些原因: 1. 理解业务需求:领域驱动设计强调与业务专家密切合作,通过深入理解业务领域的知识,能够更好地理解和满足业务需求。这有助于开发团队在设计和实现软件系统时更准确地反映业务规则和流程。 2. 复杂性管理:复杂的业务领域往往涉及大量的概念、规则和关系,如果没有适当的设计方法,可能会导致系统变得难以理解和维护。领域驱动设计通过将复杂的领域分解为可管理的模型元素,帮助开发团队更好地处理复杂性。 3. 模型驱动开发领域驱动设计强调通过领域模型来指导系统的设计和开发。领域模型是对业务领域概念和规则的抽象表示,能够帮助开发团队更好地理解和表达业务需求,从而提高开发效率和质量。 4. 可扩展性和灵活性:领域驱动设计将软件系统分解为小的、自治的领域模型,每个模型都负责特定的业务功能。这种分解能够提高系统的可扩展性和灵活性,使得系统能够更好地应对变化和演进。 5. 技术无关性:领域驱动设计强调关注业务领域,而不是具体的技术实现。这使得开发团队能够独立于技术选择,更关注业务需求,从而能够选择最适合的技术来支持业务。 总之,领域驱动设计能够帮助开发团队更好地理解业务需求、管理复杂性、提高开发效率和质量,以及增强系统的可扩展性和灵活性。它能够使开发团队更准确地建立起与业务的沟通和理解,从而更好地满足用户的需求。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值