基于领域模型的设计与开发
- 数据库设计
- 程序设计
- 微服务设计
在线订餐系统的领域事件通知
微服务拆分
事件风暴会议
- 梳理领域事件
- 进行领域建模
- 识别聚合关系
- 划分限界上下文
用户下单领域模型
更新后的模型
领域模型的设计实现过程
数据库设计
数据库映射:一对一关系
数据库映射:多对一关系
数据库映射:一对多关系
数据库映射:多对多关系
NoSQL数据库的设计
数据库映射:继承关系(1)
数据库映射:继承关系(2)
数据库映射:继承关系(3)
NoSQL数据库设计
服务/实体/值对象
- 服务(Service)
- 领域建模中标识某些行为或操作
- 实体(Entity)
- 领域建模中表示每一个业务个体的领域对象
- 值对象(Value Object)
- 领域建模中表示某个客观事物的领域对象
贫血模型的设计
充血模型的设计
聚合(Aggregate)
工厂(Factory)/仓库(Respository)
领域驱动设计 vs 非领域驱动设计
领域驱动设计的分层架构
仓库:DAO
微服务的分层
限界上下文
限界上下文的设计原则
- 限界上下文之间:低耦合
- 耦合:元素(模块、类、方法)之间相互依赖
- 当某元素需要变更、拓展、复用时,因为耦合使得这种变更、拓展、复用变得困难
- 最极端的低耦合:谁都不去依赖
- 限界上下文内:高内聚
- 内聚:某个元素只做自己职责之内的事情,将职责之外的事情交给别人去做,自己只是调用
- 高内聚的内涵与作用:单一职责原则
微服务的实现