
课程咨询: 400-996-5531 / 投诉建议: 400-111-8989
认真做教育 专心促就业
java编程开发随着互联网的不断发展而被越来越多的程序员掌握,今天运城达内IT培训就给大家简单介绍一下,领域驱动设计概念与应用。
领域驱动设计(DDD)提出是从系统的分析到软件建模的一套方法论。将业务概念和业务规则转换成软件系统中的概念和规则,从而降低或隐藏业务复杂性,使系统具有更好的扩展性,以应对复杂多变的现实业务问题。总结它是一套完整而系统的设计方法、是一种设计思维、一种方法论,并不是"系统架构",一种架构设计原则、思维。
1、为什么要使用"领域驱动设计",或者说其用途,应用场景式什么?
善于处理高复杂业务的产品研发、可帮助我们提炼稳定的产品内核(领域模型中称为核心域);
通过建模可提高建模高内聚、降低模型间的耦合度,提高系统的可扩展性与稳定性;
强调团队与领域的合作沟通,有助于建立一个沟通良好的团队组织;
统一设计思想与设计规范,有助于提高团队成员的架构设计能力和面向对象设计能力;
现有的微服务建构都是遵循领域驱动设计的架构原则;
如果你负责的软件系统并不复杂,那么,你确实不需要学习领域驱动设计!
2、领域驱动设计跟时下流行的架构思维大的区别是什么?
领域驱动设计的思维是:对象+行为+服务,所有的设计围围绕着对象、行为、服务展开;
时下流行架构设计思维是:基于MVC分层架构进行纵向扩展,分业务模块进行产品横向扩展;
传统的方案
三层应用架构:数据-应用(业务逻辑层)-展现,通常是以数据位为起点进行数据库分析设计。
服务层过重,数据模型失血,没东西;
面条式编程或者面向数据库编程,服务层围绕数据库作业完成业务逻辑,经常一条线撸到底;
代码一整块一整块的过重,很难扩展复用;
数据库模型只是数据库映射,没有相关的行为支撑,行为都被上一层Service给完成等了,因此是失血的领域模型;
领域驱动方案
架构四层在DDD分层结构中将三层中业务逻辑拆解为应用层和领域层,核心业务逻辑表现下沉到领域层去实现,以业务领域模型为核心建模(面向对象建模),更能体现对现实世界的抽象,其优点如下
轻服务层+充血的领域模型;
领域模型封装和实现各自应有的行为,可以认为是一个高内聚、低耦合的组件;
由于模型集数据与行为于一身,是一种自解释的对象,代码复用性高,业务逻辑清晰明确;
用户界面层:主要职责是通过用户界面向用户显示数据信息,同时解释用户的命令,并把用户的请求发送到应用层。
应用层:通过调用基础设置和领域层完成数据资源操作及业务流程编排,相当于BS层;
领域层:将业务逻辑高度内聚到领域层,所以领域层是整个系统的核心,它只与实际业务相关,不关心任何技术细节,尽可能做到与持久化无关;
基础设施层:包含了任何类型的框架、数据库访问代码或者公共的方法等,纯技术的一层;
3、如何学习领域驱动设计
没有谁能够做到领域驱动设计的一蹴而就,所谓"理论联系实际",在刚开始接触或学习设计领域驱动时,总会有一种诉求希望能给出公式般的设计准则或规范,似乎软件设计就像拼积木一般,只要遵循图示给出的拼搭过程,不经思考就能拼出期待的模型,这似乎不切实际的幻想,要掌握领域驱动设计,先要了解掌握一些概念以知识理论,在此基础之上思考这些概念背后蕴含的原理,设计原则,思考限界上下文(BoundedContext)边界的划分,实际还是围绕"高内聚、低耦合"原则的体现,只是我们考虑什么内容才是高内聚,如何抽象才能做到低耦合,在分层架构中,各层之间该如何协作?出现了依赖如何解耦,仍然需要从重用与变化的角度去思考设计决策。