关于领域设计, 我也是初学者, 下方的诸多言论只是我个人理解想法, 并不一定是正确的.
限界上下文 是从复杂系统中划分模块的方法, 限界上下文的命名最好使用偏动词的方式, 这样方便开发者跳出数据库建模的架构影响.
在使用DDD思想的时候, 最好先抛弃框架, 数据库等等的约束, 先把设计做好, 最后在来考虑框架,
限界上下文和 子域 最好保持一对一的关系,
按照我之前的想法, 根据经验和直接我会把电商系统划分成:
这也是很多人的直觉划分, 但是上面的划分是很有歧义的. 比如用户模块:
可以看到随着模块的增多, 和用户模块的关联也增多, 用户模块需要包含的信息也增多, 用户模块完全和各个模块强耦合, 一个用户
中包含太多各个模块独有的信息了; 这说明简单的划分用户模块是一种不好的划分方式.
我们简单的把模块划分类比成限界上下文, 上下文以偏动词划分, 我个人理解的划分方式如下:
我也是初学, 这图只是我自己的理解. 其实 用户
这个名词在不同的上下文中是有不同含义的, 我们无法抽出一个符合所有模块要求的用户
那么就说明用户模块的划分是有问题的.
比如一件货品.
上图中 发货
这个动作在价格模块中都包含, 但是注意他们是不同的, 上下文就相当于语境, 同样动作在不同语境中是根本不同的.
图中的所有上下文命名都是动词的方式, 把相关的一系列操作合并到一起成一个上下文, 划分出了上下文, 一个系统的模块大概率也差不多划分清楚了, 接下来就是详细的代码结构的设计了