大家好,今天咱们继续更新DDD&微服务系列!
DailyMart是一个简单的购物商城,主要销售书籍,包括实体书和电子书。本文将使用领域驱动设计(DDD)对DailyMart的业务进行分析与优化,以提高系统的内聚性和降低耦合度。
1. DailyMart核心业务流程
DailyMart的核心业务流程如下:
用户在DailyMart上注册并获得初始积分。购物时可获得积分奖励,1000积分可抵扣10元。
用户可配置多个收货地址,将其中一个地址设为默认地址。
用户登录后可将书籍加入购物车或直接购买。购买后生成订单并支付。支付完成后,商城发货,用户可查看物流信息。
2. 领域分解与子域划分
根据DDD的设计原则,我们首先对DailyMart进行领域分解,识别出核心业务和支撑业务。
2.1 什么是领域
在研究和解决业务问题时,DDD 会按照一定的规则将业务领域进行细分,当领域细分到一定的程度后,DDD 会将问题范围限定在特定的边界内,在这个边界内建立领域模型。进而用代码实现该领域模型,解决相应的业务问题。简言之,DDD 的领域就是这个边界内要解决的业务问题域。
既然领域是用来限定业务边界和范围的,那么就会有大小之分,领域越大,业务范围就越大,反之则相反。
领域可以进一步划分为子域,每个子域对应一个更小的问题域或更小的业务范围,子域可以根据自身重要性和功能属性划分为三类子域,它们分别是:核心域、通用域和支撑域。