DDD实战进阶第一波(二):开发通常业务的大健康行业直销系统(搭建支持DDD的轻量级框架一)

本系列文章html

DDD实战进阶第一波(一):开发通常业务的大健康行业直销系统(概述)前端

DDD实战进阶第一波(二):开发通常业务的大健康行业直销系统(搭建支持DDD的轻量级框架一)数据库

 

要实现软件设计、软件开发在一个统一的思想、统一的节奏下进行,就应该有一个轻量级的框架对开发过程与代码编写作必定的约束。微信

虽然DDD是一个软件开发的方法,而不是具体的技术或框架,但拥有一个轻量级的框架仍然是必要的,为了开发一个支持DDD的框架,首先须要理解DDD的基本概念和核心的组件。并发

 

一.什么是领域驱动设计(DDD)框架

 首先要知道DDD是一种开发理念,核心是维护一个反应领域概念的模型(领域模型是软件最核心的部分,反应了软件的业务本质),而后经过大量模式来指导模型设计与开发。高并发

DDD的通常过程是:首先经过软件需求规格说明书或原型生成一个领域模型(类、类的属性、类与类之间的关系);而后根据模式(应该如何分层?、领域逻辑写在哪?与持久化如何交互?如何协调多对象领域逻辑?如何实现逻辑与数据存储解耦等)指导来实现代码模型。post

 

二.为何使用DDD性能

DDD能应对复杂性与快速变化:spa

1.从技术维度实现分层:可以在每层关注本身的事情,好比领域层关注业务逻辑的事情,仓储关注持久化数据的事情,应用服务层关注用例的事情,接口层关注暴露给前端的事情。

2.业务维度:经过将大系统划分层多个上下文,可让不一样团队和不一样人只关注当前上下文的开发。

3.时间维度:经过敏捷式迭代快速验证,快速修正。

 

三.DDD核心组件

1.界限上下文:首先要将大系统划分层多个界限上下文,好比大健康行业直销系统能够划分为产品、经销商、订单等几个界限上下文,每一个界限上下文有本身的领域逻辑、数据持久化、用例、接口等。每一个界限上下文根据特色,具体实现方式又不一样,好比有些界限上下文基本没有业务逻辑,就是增删改查,则可使用CRUD最简单的模式;有些界限上线文有必定的业务逻辑,但对高并发、高性能没要求,则可使用经典DDD模式;有些界限上下文有必定的业务逻辑,并且有高性能要求,则可使CQRS模式。

2.实体:有业务生命周期,采用业务标识符进行跟踪。好比一个订单就是实体,订单有生命周期的,并且有一个订单号惟一的标识它本身,若是两个订单全部属性值所有相同,但订单号不一样,也是不一样的实体。

3.值对象:无业务生命周期,无业务标识符,一般用于模式实体。好比订单的收货地址、订单支付的金额等就是值对象。

4.服务:无状态,有行为,一般就是一个用例来协调多个领域逻辑完成功能。

5.聚合:一般将多个实体和值对象组合到一个聚合中来表达一个完整的概念,好比订单实体、订单明细实体、订单金额值对象就表明一个完整的订单概念,并且生命周期是相同的,而且须要统一持久化到数据库中。

6.聚合根:将聚合中表达总概念的实体作成聚合根,好比订单实体就是聚合根,对聚合中全部实体的状态变动必须通过聚合根,由于聚合根协调了整个聚合的逻辑,保证一致性。固然其余实体能够被外部直接临时查询调用。

7.服务:协调聚合之间的业务逻辑,而且完成用例。

8.仓储:用于对聚合进行持久化,一般为每一个聚合根配备一个仓储便可。仓储可以很好的解耦领域逻辑与数据库。

9.工厂:用于建立复杂的领域对象,可以将领域对象复杂的建立过程保护起来。

 

QQ讨论群:309287205 

DDD实战进阶视频请关注微信公众号:

相关文章
相关标签/搜索