如何精炼领域模型

如何保持领域模型的完整性描述如何通过Bounded Context使自己的领域模型保持完整,但是随着业务的不断发展模型也在不断的完善,模型本身会膨胀到我们难以控制。所以我们要时刻精简我们的模型,如何清晰的明确哪些是我们模型要解决的主要矛盾,即:“Core Domain”

Core Domain

核心领域,我们建模中亟待解决的主要矛盾

  • 它内容应该是精炼的
  • 它在工作中的优先级应该是最高的最先被解决的
  • 它应该是趋于稳定的,因为Core Domain经常被变更很有可能是我们对模型理解不够

Generic Subdomain

一些和我们当前要解决的核心问题【Core Domain】的通用知识我们应该分离出去至少在设计Core Domain时候它们的优先级不高,属于次要矛盾。比如订单系统中的“用户”,它不属于订单系统的Core Domain,订单系统的Core Domain更应该是订单的状态、流转等信息

突出Core Domain的俩种方法

  1. Domain Vision Statement-领域远景说明:它很类似我们上学时候总结文章的主要内容,应该简要指出我们当前核心要解决的问题主旨,以及我们模型的核心价值,与此无关的信息都不要提,也就是我们常说的痛点。
  2. Highted Core:突出核心,Core Domain应该能很容易的被分辨出来,应该被团队所有人非常容易的理解

Cohesive Mechanism 内聚机制

如果模型包含了很复杂、专业的算法,集成在模型中可能导致Core Domain的混乱那么我们可以把算法抽象出去并且提供api给Core Domain。很类似Generic Subdomain,它俩的区别可能Cohesive Mechanism只是封装了算法而不是模型。

Segregated Core 分离核心

模型中如果有一些起到支撑作用的对象、类和Core Domain掺杂在一起我们应该对其进行重构以保持Core Domain的简介、易理解。这时候我们往往先审核Core Domain将和其无关的代码放在其他的Moudle中,然后分别对Core Domain和那个Moudle进行重构。

难点在于,团队对于Core Domain的统一认知,因为Core Domain在重构过程中是不断变化的

##