一、战略、战术、战役
首先 DDD 是一种软件设计方法,Domain-driven design (DDD) is a major software design approach. 来自维基百科。软件设计方法涵盖了;范式、模型、框架、方法论,主要活动包括建模、测试、工程、开发、部署、维护。来自维基百科的软件设计涵盖信息介绍。
在 DDD 领域驱动设计中,常提到战略
、战术
,和一少部分会讲到战役
。这3个词主要讲的是不同的开发阶段所需要完成的事项;
-
战略 - 建模;领域划分、界限上下文、核心领域
-
战术 - 架构;工程结构、领域对象、领域服务、领域事件
-
战役 - 编码;设计原则、设计模式
DDD 的战略、战术和战役设计相辅相成,战略提供系统的建模作为宏观指导,战术下面有N个战役,两者则关注具体的实现和编码落地。
在维基百科中有不少 DDD 非常好的资料,其中一个是关于事件风暴的,讲解了执行战略设计中风暴模型的步骤。
有了这基础认知,接下来我们通过《大营销项目》从需求到设计,一步步了解系统的领域驱动设计。
二、产品需求
1. 产品诉求
如图,是一个复杂的营销抽奖场景玩法需求,涵盖了;活动配置
、签到&奖励
、活动账户
、抽奖策略「责任链+规则树」
、库存扣减
、抽奖满N次后阶梯抽奖
等。面对这样的复杂系统,非常适合使用 DDD 落地。
分析需求;
-
整体概率相加,总和为1或者分值计算,概率范围千分位
-
抽奖为免费抽奖次数 + 用户消耗个人积分抽奖
-
抽奖活动可给用户分配可抽奖次数,通过点击签到发放
-
活动延伸配置用户库存消耗管理&#