热门标签 | HotTags
当前位置:  开发笔记 > 后端 > 正文

DDD(领域驱动设计)分享(2/2)

文章目录一、概述二、分层架构一、概述DDD的系统架构有很多,常见的有分层架构、洋葱架构、六边形架构等,看起来像是多个不同的设计,但是他们

文章目录

  • 一、概述
  • 二、分层架构


一、概述

DDD的系统架构有很多,常见的有分层架构、洋葱架构、六边形架构等,看起来像是多个不同的设计,但是他们的核心思想其实都差不多:职责分明、高内聚低耦合。比如洋葱架构中最内层的最小原是实体模型,表示实体对外部的依赖最小基本不依赖其他层,同样的在分层架构中的领域层也是这样的思路,领域层中实体只负责自己独立的业务逻辑,而整体的业务实现和事务等都是领域服务通过编排领域实体来实现的。

二、分层架构

DDD的分层架构遵循一个原则:每层只能与位于下方的直接下层发生耦合,而不能直接同层依赖或者向上依赖上层。由于层间松散的耦合关系,使得我们可以专注于本层的设计,而不必关心其他层的设计,也不必担心当前层的设计会影响其它层。一般来说通常分为四层:用户接口层、应用层、领域层、基础设施层。
在这里插入图片描述
1.用户接口层的主要职责是提供接口给前端进行调用,完成特定的产品功能,向下依赖应用层。

2.应用层主要是负责接收用户接口层参数,然后进行逻辑拆分,可能一个很复杂的功能需要多个领域共同完成,应用层需要根据实际情况对领域层进行编排,最后根据多个领域的数据组合成最终结果。与此同时,还要负责总的容错处理。

3.领域层主要专注于领域内部的逻辑,保证自己领域内部逻辑自洽,同时要处理领域内部的本地事务行为。实体主要负责核心的业务逻辑,而领域服务主要用来编排实体。

4.基础设施层主要负责一些独立的基础功能,比如数据存储,上层完全不用关心数据是如何进行持久化的,是用Mysql还是ES等,基础设施层只会暴露一个统一的接口表明自己有哪些能力即可。

分层架构看起来和传统的MVC三层架构有些相似,但是仔细探索会发现,DDD的分层架构更加细致,更加强调高内聚低耦合,永远都是向下的单向一级依赖关系,而且每层负责独立的功能,相互之间没有重叠。传统的三层架构可拓展性较差,一次功能迭代就可能导致整体的重构,而DDD中松耦合的分层架构,相对来说比较可控,每层的改动对其他层的影响较小,拓展性更高,更加适用于现在敏捷开发的模式,每次迭代都能快速完成。


推荐阅读
  • PHP 编程疑难解析与知识点汇总
    本文详细解答了 PHP 编程中的常见问题,并提供了丰富的代码示例和解决方案,帮助开发者更好地理解和应用 PHP 知识。 ... [详细]
  • Docker的安全基准
    nsitionalENhttp:www.w3.orgTRxhtml1DTDxhtml1-transitional.dtd ... [详细]
  • PHP 5.2.5 安装与配置指南
    本文详细介绍了 PHP 5.2.5 的安装和配置步骤,帮助开发者解决常见的环境配置问题,特别是上传图片时遇到的错误。通过本教程,您可以顺利搭建并优化 PHP 运行环境。 ... [详细]
  • MySQL缓存机制深度解析
    本文详细探讨了MySQL的缓存机制,包括主从复制、读写分离以及缓存同步策略等内容。通过理解这些概念和技术,读者可以更好地优化数据库性能。 ... [详细]
  • Hadoop入门与核心组件详解
    本文详细介绍了Hadoop的基础知识及其核心组件,包括HDFS、MapReduce和YARN。通过本文,读者可以全面了解Hadoop的生态系统及应用场景。 ... [详细]
  • 5G至4G空闲态移动TAU流程解析
    本文详细解析了用户从5G网络移动到4G网络时,在空闲态下触发的跟踪区更新(TAU)流程。通过N26接口实现无缝迁移,确保用户体验不受影响。 ... [详细]
  • 本文探讨了MariaDB在当前数据库市场中的地位和挑战,分析其可能面临的困境,并提出了对未来发展的几点看法。 ... [详细]
  • 本文作者分享了在阿里巴巴获得实习offer的经历,包括五轮面试的详细内容和经验总结。其中四轮为技术面试,一轮为HR面试,涵盖了大量的Java技术和项目实践经验。 ... [详细]
  • Java项目分层架构设计与实践
    本文探讨了Java项目中应用分层的最佳实践,不仅介绍了常见的三层架构(Controller、Service、DAO),还深入分析了各层的职责划分及优化建议。通过合理的分层设计,可以提高代码的可维护性、扩展性和团队协作效率。 ... [详细]
  • 本文详细介绍了MySQL数据库中的Bin Log和Redo Log,阐述了它们在日志记录机制、应用场景以及数据恢复方面的区别。通过对比分析,帮助读者更好地理解这两种日志文件的作用和特性。 ... [详细]
  • 本文探讨了在处理大量物联网设备时,如何合理设计关系型数据库来高效记录设备的上下线历史,确保数据的可维护性和扩展性。 ... [详细]
  • 本文详细介绍了如何通过命令行启动MySQL服务,包括打开命令提示符窗口、进入MySQL的bin目录、输入正确的连接命令以及注意事项。文中还提供了更多相关命令的资源链接。 ... [详细]
  • 解读MySQL查询执行计划的详细指南
    本文旨在帮助开发者和数据库管理员深入了解如何解读MySQL查询执行计划。通过详细的解析,您将掌握优化查询性能的关键技巧,了解各种访问类型和额外信息的含义。 ... [详细]
  • 深入理解ASP.NET MVC中的_ViewStart.cshtml
    本文介绍了_ViewStart.cshtml文件在ASP.NET MVC 3.0及以上版本中的作用和使用方法。该文件位于Views目录下,主要用于统一配置视图布局和其他全局设置。 ... [详细]
  • FineUI 是一款基于 jQuery 的专业级控件库,专为 ASP.NET WebForms 和 MVC 开发设计。它提供了丰富的用户界面组件,简化了复杂 Web 应用程序的开发过程。 ... [详细]
author-avatar
辞骸
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有