第二章 领域分析模型
第三章 领域设计模型
第四章 DDD实战
前言
DDD是一种处理高度复杂领域的愿景和方法,他主张在软件项目中把领域本身作为关注的焦点,维护一个对领域有深度认知的软件模型。核心思想是通过领域驱动设计方法定义领域模型,从而确定业务和应用边界,保证业务模型与代码模型的一致性。
DDD是面向对象编程,从业务中来到业务中去。MVC是指controller、service、dao,优点是模式固定,可以快速适用小型业务。DDD核心在于领域层划分,能够体现业务建模的灵活性。具体还包括聚合根怎么设计,实体,值对象有哪些,领域服务怎么划分。DDD 的本质是一种软件设计方法,而微服务架构是具体的实现方式。
一、DDD关键概念
-
核心域、子域
-
通用语言
-
限界上下文
-
防腐层
-
事件风暴
由DDD专家、项目经理、产品、测试、开发一起进行的业务流程梳理。
-
实体和值对象
-
贫血模型
面向过程的编程模式,任何的代码都可以随意修改。 -
充血模型
面向对象 -
聚合和聚合根
-
领域事件
-
领域服务
-
工厂和资源库
二、DDD十问
-
DDD和微服务关系
-
DDD为什么需要do vo dto po
vo:view object,视图对象,勇于展示层,作用是把指定页面数据封装起来给到客户端。
dto: data transfer object ,数据传输对象,作用是展示层和服务层之间传输对象。
do:domain object,领域对象,充血模型中实体的聚合。
po: persistent object,持久化对象,持久层,操作数据库等,一张表对应一个po。 -
业务模型和领域模型关系
-
传统DDD分层架构和cqrs、六边形区别
-
执行DDD标准流程
战略设计 战术设计 域 上下文 实体 值对象 聚合 -
DDD和传统三层结构比较
-
战略设计和战术设计如何理解
-
DDD面向对象分析方法
8.1 需求分析
5W1H8C方法:
when:用户什么时间用,半夜备份的,需要自动化执行
where:什么地方用,室内室外
who:谁来用
what:给用户提供什么,输出是文档、图片
why:需求背后痛点how:咋么实现
8个constraint约束:
性能performance:rt、吞吐量、qps、uv等
成本:开发成本
时间:交付
可靠性:
安全:涉及到钱、身份证等
合规性:行业标准法、法律法规、规范等,SOX、ITUT、3C、3GPP等
技术性:技术方案,是否有特别要求
兼容性:端发布
如何画好用例流程图:
正常梳理:
异常处理:每一步
替代处理:每一步 -
用例名称:即需求名称
-
场景:每个环节详细列出来,场景即用例发生的环境,对应5w中的when、who、where
-
用例描述:详细的用例内容,对应what和how,即用户该怎么做,以及每个步骤的输出
-
用例价值:why,客户价值
-
约束和限制:8c,针对每个流程
8.2 领域建模
8.3 设计模型
8.4 落地实践