什么是DDD
DDD是领域驱动设计(Domain-driven design) 的缩写,我们需要关注的是为什么要用它,谁来用它,后面将要学到什么样的概念和知识来运用它?
引言
软件是用来解决问题的。支付软件解决支付动作与资金流向问题,电商购物软件解决购物及订单问题,音视频软件解决音视频播放问题。如果软件脱离了它解决问题的领域,就称不上是软件了。
那么软件既然是用来解决一些领域当中的问题的,就要关注怎么去用软件技术来更好地解决领域,当然对领域进行必要的了解十分重要(技术方案也很重要)。
DDD可以帮助我们对领域建模,用这种建模手段来驱动我们的设计开发等一系列工作,能提高我们的工作效率
谁来使用DDD?
领域专家+开发人员
- 领域专家是精通特定领域的人员,他在该领域是专业的。如证券领域的专家对证券行业的专业术语很了解并深知其含义,他们关注的是业务带来的价值。
- 开发人员是掌握软件设计/开发/测试/部署/维护技术的人或整个团队。他们关注的是如何用技术手段保障自己的软件足够健壮和好用。
想象一个场景:
- 证券公司想雇一批开发人员来为他们公司开发一款证券软件,功能可能是买卖证券等,证券公司代表A和开发人员代表团队B在一起开会:
- A在讲业务需求时,包含这样一些词 开盘价、反弹、配股、空头市场、利好
- B在讲实现方案时,包含这样一些词 架构、抽象、类、封装、设计模式
- 这样的沟通会议毫无意义,开一天也没办法研究出这个软件究竟应该如何实现