DDD从入门到精通:基础篇

摘要:
首先,解释域模型的作用:设计软件需求以保持其内部逻辑的一致性。1) 边界划分也是一种高内聚性和低耦合性。2) 所有逻辑在对象内都是内聚的。为什么需要DDD?在DDD概念中,仓库负责存储域对象,但仓库本身没有指定存储介质。

这篇文章主要还是表述清楚DDD相关的基础概念,因为DDD入门有一定的专业名词,还是得有个基本的了解。

先讲解下领域模型作用

对软件需求进行设计,维持其内在逻辑的一致性

1)划分边界、也是一种高内聚、低耦合

2)所有逻辑都是内聚在对象内部的【包含行为和数据】

 

为什么需要DDD?

DDD从入门到精通:基础篇第1张

行业现状:

 DDD从入门到精通:基础篇第2张

贫血模型、充血模型

 DDD从入门到精通:基础篇第3张

  • 领域模型就是DDD?
    • 其实领域模型早于DDD,很早就存在了,DDD算是一种实现方式而已
  • 战略设计、战术设计
  1. 领域、子域、界限上线文、上下文映射图这些是DDD的战略设计(帮助服务的关系设计、边界设计)
  2. 实体、值对象、聚合、CQRS、事件溯源、这些是DDD的战术设计(实现手段
  • 实体:具有唯一标识,实体可能会变化,比如订单状态,但它的唯一标识不会变化。有生命周期的概念(待支付、已支付、关闭等)
  • 值对象:特点是不变形。创建之后不会被改变。如果改变了,就是一个新的地址(打个比方),最多算是描述,仅仅只用来度量或描述的对象应该被设计为值对象
  • 聚合:关联对象的实体,将其作为一个单元来处理数据变更。
  • 聚合根:将多个实体和值对象聚合在一起的实体        
    • 仓储:领域对象都怎么构建出来的,它们存在哪里?这就不得不提到仓储(Repository)这个概念。在DDD理念里,仓储负责领域对象的存储,但仓储本身并没规定存储介质。也就是说仓储只负责定义领域对象的读/写协议,至于具体用内存、MySQL还是Oracle,它不关心。在《领域驱动设计:软件核心复杂性应对之道》中提到,一般只对聚合根建立仓储

示例:

        • DDD从入门到精通:基础篇第4张
        • 通过战略设计,划分模块和服务的边界与依赖关系,对微服务架构的设计至关重要。

        • 六边形架构:不同的外部系统通过不同的适配器与领域模型交互,可以是HTTP/WEBSERVICE/RPC只需要为这些不同的访问接口提供不同的适配器就可以了
        • DDD从入门到精通:基础篇第5张

        待补充。。。

        免责声明:文章转载自《DDD从入门到精通:基础篇》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

        上篇提升权限令牌激活函数总结下篇

        宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

        相关文章

        DDD:策略模式如何结合动态表达式

        企业应用中我们经常会遇到各种业务规则,针对这种规则,我们多数情况会采用策略模式,每种策略对应一个具体类和一个具体的配置界面。但是企业业务的规则经常变化,现有的策略随着时间的推移而不能满足要求,针对这种情况我们可以用动态表达式来解决。 动态表达式:在静态语言中动态的执行代码,目前可选的技术有:动态编译、Iron、Roslyn、内嵌小语言。 今天来测试一下内嵌...

        XPath学习:parent,child

        XPath 是一门在 XML 文档中查找信息的语言。XPath 可用来在 XML 文档中对元素和属性进行遍历。      XPath 是 W3C XSLT 标准的主要元素,并且 XQuery 和 XPointer 同时被构建于 XPath 表达之上。      推荐一个挺不错的网站:http://www.zvon.org/xxl/XPathTutorial...

        DDD—企业数字化转型和中台建设

        一、数字化转型 数字化转型是企业能力全面体系化,系统化,数据化提升的过程,这种提升包括了技术能力,业务能力,组织架构合理性等多方面的提升。 而随着多年来海量高频业务的发展,技术也在推动着持续进步,并且越来越多的技术方案趋向成熟,类似于阿里巴巴,腾讯,美团等,所有业务都已上云,并且在整套分布式架构上,无论是流量控制层,还是微服务治理上,都有了自己成熟的解决方...

        [Architecture Design] DDD经验分享 (下)

        接续... [Architecture Design] DDD经验分享 (中) 系统设计阶段 (SD) 「系统设计阶段」主要的工作是对设计完成的系统架构,做每个功能模块的对象设计。一般会采UML的「类别图」、「循序图」等等工具,来完成系统设计的工作。最终将设计完毕的解决方案,整理成一份「系统设计规格书」。如果说需求分析阶段是建立骨架,那么系统设计阶段就是填...

        Entity Framework之深入分析

        EF虽然是一个晚生畸形的ORM框架,但功能强大又具有灵活性的,给了开发人员一定的发挥空间。因为微软出发点总是好的,让开发变得简单,但实际上不是所有的事情都这么理想。这里顺便推荐马丁大叔的书《企业应架构模式》。 本节主要深入分析EF的分层问题,下面是本节的已列出的要探讨内容。 领域模型的概念 DbContext与Unit of Work 的概念 DbCon...

        DDD领域模型企业级系统(二)

        用户层: 1.请求应用层获取用户显示的信息 2.发送命令给应用层要求执行某个命令 应用层: 对用户界面提供各种应用功能(包括信息获取与命令执行),应用层不包含业务逻辑,业务层是由应用层调用领域层(领域对象或领域服务)来完成的,应用层是很薄的一层 领域层: 包含领域对象和领域服务,完成系统所需的业务处理,是系统的核心。业务逻辑与仓储接口都在领域层 基础机构层...