R: 实践中的领域驱动设计和开发

原文:Domain Driven Design and Development In Practice (infoq.com)
 

背景

领域驱动设计(DDD)是指将业务领域概念映射到软件构件中。有关这一主题的大多数著作和文章都是以 Eric Evans 的《领域驱动设计》一书为基础,主要从概念和设计的角度论述领域建模和设计问题。这些著作讨论了领域驱动设计的主要元素,如实体、价值对象、服务等,或讨论了无处不在的语言、有界上下文和防破坏层等概念。 
 

我们将研究技术主管和架构师可以在实施工作中使用的指南、最佳实践、框架和工具。领域驱动设计和开发还受到多个架构、设计和实现方面的影响,例如:

  • 业务规则
  • 坚持
  • 缓存
  • 事务管理
  • 安全
  • 代码生成
  • 测试驱动开发
  • 重构

领域模型提供以下的好处:

1. 它帮助团队在公司的业务和 IT 相关人员之间创建一个通用模型,团队可以使用该模型来传达有关业务需求、数据实体和流程模型的信息。
2. 该模型是模块化的、可扩展的且易于维护的,因为设计反映了业务模型。
3. 它提高了业务域对象的可重用性和可测试性。

项目管理

域建模项目通常包括以下步骤:

  • 首先对业务流程进行建模和文档记录。
  • 选择一个候选业务流程,并与业务领域专家合作,使用通用语言对其进行记录。
  • 确定候选业务流程所需的所有服务。这些服务本质上可以是原子的(单步)或编排的(带或不带工作流的多步)。它们也可以是业务(例如承保或融资)或基础设施(例如电子邮件或工作安排)。
  • 标识并记录上一步中标识的服务使用的对象的状态和行为。

架构

典型的企业应用程序体系结构由以下四个概念层组成:

  • 用户界面(表示层):负责向用户呈现信息并解释用户命令。
  • 应用层:此层协调应用程序活动。它不包含任何业务逻辑。它不保存业务对象的状态,但可以保存应用程序任务进度的状态。
  • 域层:此层包含有关业务域的信息。业务对象的状态保存在此处。业务对象的持久性及其可能的状态被委托给基础结构层。
  • 基础架构层:此层充当所有其他层的支持库。它提供层之间的通信,实现业务对象的持久性,包含用户界面层的支持库等。

依赖注入

DI 是将配置和依赖项代码移出域对象的好方法。此外,域类对数据访问对象 (DAO) 类和服务类对域类的设计依赖性使 DI 成为 DDD 实现中的“必备项”。DI 通过将其他对象(如存储库和服务)注入到域对象中,促进了更简洁和松散耦合的设计。

在示例应用程序中,服务对象 (FundingServiceImpl) 使用 DI 注入实体对象(贷款、借款人和融资请求)。此外,实体通过 DI 引用存储库。类似地,其他 Java EE 资源(如 DataSource、Hibernate Session Factory 和 Transaction Manager)也注入到服务和存储库对象中。

面向切面的编程

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值