导航
导航

DDD学习笔记

为什么需要DDD?

我们都知道随着技术的发展,架构也在不断的演变,从单机架构到分布式架构再到现在火热的微服务(现在更火热的应该是service mesh了 哈笑~)但是微服务也存在一些问题,微服务的粒度应该多大 ? 微服务如何设计呢? 微服务如何拆分 ? 微服务边界在哪里 ?所以总结来说微服务的难点就是边界问题。而DDD就是解决了这个确定业务边界的问题,可见DDD并不是一种技术架构,而是一种划分业务领域范围的方法论。可以很好实现微服务内部和外部的”高内聚、低耦合”。

领域模型(domain model)是对领域内的概念类或现实世界中对象的可视化表示。领域模型也称为概念模型、领域对象模型和分析对象模型。

DDD领域驱动设计

领域驱动设计,我们做开发中容易出现对一些功能归属模糊不清,区别于传统架构设计,ddd帮助做到清晰划分。

既面向技术也面向业务,从业务的角度来把握设计方案

4个特点:统一思想、明确分工、反映变化、边界分离。

4种模式:失血模式、贫血模式、充血模式、胀血模式。

失血模式:模型中只有简单的get set方法,是对一个实体最简单的封装,其他所有的业务行为由服务类来完成。

贫血模式:在失血模型基础之上聚合了业务领域行为,不关心数据持久化。

充血模式:在贫血模型基础上,负责数据的持久化。

胀血模式:service都不需要,所有的业务逻辑、数据存储都放到一个类中。

对于DDD来说,失血和胀血都是不合适的,充血模型依赖repository接口,与数据存储紧密相关,有破坏程序稳定性的风险。

建模方法:

  • 用例分析法
  • 四色建模法
  • 事件风暴