咱们使用领域驱动设计(英文缩写为DDD)的方法来设计引擎,在引擎开发的过程当中,领域模型会不断地演化。
本文介绍本系列使用的领域驱动设计思想的相关概念和知识点,给出了相关的资料。html
从0开发3D引擎(八):准备“搭建引擎雏形”github
下面的资料粗略地介绍了DDD的相关知识点:
领域驱动设计学习输出
领域驱动设计(DDD)部分核心概念的我的理解数据库
相关资料为:
DDD理论学习系列设计模式
参考领域驱动设计学习输出:网络
领域模型包括领域服务、实体、值对象数据结构
相关资料为:
领域驱动设计之实体、值对象、领域服务
DDD 领域驱动设计学习(五)- 实体/值对象/领域服务架构
可分为四类:app
相关资料为:
关于领域模型(贫血模型,充血模型)dom
DDD主要有分层、六边形、洋葱这几种架构。其中,六边形和洋葱架构都运用了依赖倒置,比较相似。
架构资料:
DDD 领域驱动设计学习(四)- 架构(分层/六边形/RESTful)
分层架构资料:
DDD分层架构的三种模式
洋葱架构资料:
The Onion Architecture
相关概念参考领域驱动设计系列(2)浅析VO、DTO、DO、PO的概念、区别和用处:
VO(View Object):视图对象,用于展现层,它的做用是把某个指定页面(或组件)的全部数据封装起来。
DTO(Data Transfer Object):数据传输对象,这个概念来源于J2EE的设计模式,原来的目的是为了EJB的分布式应用提供粗粒度的数据实体,以减小分布式调用的次数,从而提升分布式调用的性能和下降网络负载,但在这里,我泛指用于展现层与服务层之间的数据传输对象。
DO(Domain Object):领域对象,就是从现实世界中抽象出来的有形或无形的业务实体。
PO(Persistent Object):持久化对象,它跟持久层(一般是关系型数据库)的数据结构造成一一对应的映射关系,若是持久层是关系型数据库,那么,数据表中的每一个字段(或若干个)就对应PO的一个(或若干个)属性。
相关资料为:
领域驱动设计系列(2)浅析VO、DTO、DO、PO的概念、区别和用处
相关资料为:
DDD 领域驱动设计学习(一)- 领域模型和统一语言
重读领域驱动设计——如何说好一门通用语言
咱们使用事件风暴做为DDD的开始,获得通用语言。
相关资料为:
领域驱动设计: 服务边界划分
使用事件风暴探索业务全景
相关资料为:
DDD理论学习系列(2)-- 领域
相关资料为:
DDD理论学习系列(3)-- 限界上下文
参考DDD—上下文映射图,上下文之间有下面的关系:
相关资料为:
看看上下文映射的清晰视图
DDD—上下文映射图
聚合Aggregate就是一组相关对象的集合,咱们把它做为数据修改和访问的单元。一个聚合包含聚合根、实体和值对象。
相关资料为:
领域模型:聚合、聚合根
领域驱动设计-聚合
在UML中,须要区分聚合关系和组合关系,详见:
浅谈UML中的聚合与组合
服务包括应用服务、领域服务、基础服务。
基础服务是指基础设施中提供的服务,一般用于操做外部,如发送email等。
应用服务和领域服务的相关资料为:
如何分辨应用服务与领域服务
领域驱动设计DDD之领域服务
咱们使用仓库来操做PO。
相关资料为:
DDD理论学习系列(12)-- 仓储