人人都可以领域驱动设计(一)
最近几年, 领域驱动设计 (Domain-Driven Design, DDD )这个术语越来越多地出现在软件工程师的视野里。对DDD不熟悉的人可能会觉得它是软件领域里的一个新的概念,但是实际上, Eric Evans 在十几年前就已经提出了这个概念。这个“古老”的概念在之所以能够重焕新生,很大程度上是因为遇上了“ 微服务 ”这个浪潮。如果把DDD里面的理念拿去和微服务架构做对比,你会发现它们有着高度的相似性——DDD里的 限界上下文 不正是微服务架构中的微服务吗?于是,各大公司纷纷运用DDD的方法论来构建自己的产品架构。有些团队成功地将DDD结合到了产品架构中,产生了许多优秀的实践;也有些团队反映DDD太过复杂,很难落地。那么DDD究竟是个什么样的理念?为什么大家都争先恐后地使用它,彷佛不加点DDD都不好意思说自己是微服务架构?然而又为什么那么多团队说DDD难以落地?本文将会结合简单的代码实现来谈谈笔者对DDD的理解。 什么是领域驱动设计? 软件的核心是其为用户解决领域相关的问题的能力。 软件就是为了解决某一领域相关问题而存在的,比如一个普通的计算器软件,就是为了满足我们进行简单的加减乘除运算而存在。对于计算器这种小而简单的软件,一个普通的软件工程师可能花上几天就能过设计开发出来,而且基本不会出现Bug。但是对于一些大型而且复杂的系统,一个团队都得花上很长的时间去设计整个架构