【手把手教你落地 DDD】学习笔记 Day1

428 阅读3分钟

DDD 说的是什么

DDD 是一种开发复杂软件的系统化的方法学和思想; 系统化方法的作用在于,提供了一套相对容易的步骤,能够使我们这些中等智商的人,也能做到原来高智商的人才能做到的事情,从而让你能够省出时间和脑力,来探索更复杂的问题.

DDD 的来源

DDD 是来自面向对象的方法学和敏捷软件开发。 企业应用是用来解决业务问题的,所以我们应该首先把业务研究清楚,再通过技术手段来实现。 DDD正是为了解决上面这些问题而提出的。首先从“领域驱动设计”这个名字就可以看出来。“领域”指的就是软件系统要解决的业务问题。

要搞清业务,就要学会领域建模。领域建模如何做?DDD 采用了“模式”的方法。 计算机界最有名的是设计模式,后来又有分析模式、架构模式等等。 Eric Evans 正是对面向对象方法学和敏捷软件开发方法进行了提炼,总结出了一套围绕领域建模进行软件开发的模式,一共有四十多个。这些模式成为《领域驱动设计》这本书的主体。 其中最基础的模式包括:模型驱动设计,实体、值对象等。

另一方面,领域驱动设计非常强调业务人员和技术人员要一起协作进行领域建模,在这个过程中提炼领域知识。和协作密切相关的模式有通用语言、模型驱动设计、限界上下文等等。实际上,这几个模式贯穿了整个 DDD。

对于DDD的一些观点

1)DDD不能算一门完善的理论,它是出自工程师之手,目前还只能算是经验的总结和模式的梳理 2)DDD能解决的问题是针对业务复杂性如何优化软件的架构 3) 以平常心来对待DDD,和Eric Evans一样,把它当成一套模式的集合,发现哪个模式对我们有用就拿来用一下,不能用也不要勉强(DDD的限界上下文、聚合、实体、值对象等等,都可以认为是一种模式),以这种拿来主义的心态去使用DDD,反而可能会渐入佳境,也不会造成太大负担 4) DDD我觉得主要解决了以前的软件工程理论中留下的两个问题 一个是业务与技术关系的关系, 提供一系列方法,以业务为出发点,构建技术解决方案 一个是与非技术人员的协作问题,提供一些列方法,实现技术员与各个其他岗位的有机的协作 5) DDD的目的是对业务知识的封装和隔离